21xrx.com
2025-07-16 16:55:22 Wednesday
登录
文章检索 我的文章 写文章
"C++二级考题:打字员"
2023-07-04 04:24:47 深夜i     30     0
C++ 考题 打字员 编程语言 程序设计

在C++的二级考题中,有一个有趣的题目叫做"打字员"。这个题目要求我们根据输入的字符串来判断打字员所打的字符是否有误,并输出错误的字符的位置。

首先,我们需要输入一个字符串,表示打字员所打的文本。这里有一个小技巧,我们可以使用getline函数来实现一次性输入整行字符串,避免输入过程中出现空格和换行符的干扰。

接下来,我们需要用一个char数组来保存标准文本,即正确的文本。这里我们可以将其定义为常量数组,方便后续的使用。

然后,我们需要对输入的文本和标准文本进行逐个比对,如果发现不同,则将该字符的位置保存下来。这里我们可以使用一个计数器来记录当前比较的字符位置,一旦发现不同则将该位置保存到一个int数组中。

最后,我们输出保存有错误字符位置的数组即可。需要注意的是,题目要求从1开始计数,而不是从0开始,因此需要在输出时将每个位置加1。

下面是C++代码实现的示例:

#include <iostream>
#include <string>
using namespace std;
const string standardText = "Hello, World!"; // 标准文本为常量字符串
int main() {
  string inputText;
  getline(cin, inputText); // 输入文本
  int errors[standardText.size()]; // 保存错误字符位置的数组
  int errorCnt = 0; // 错误字符计数器
  for (int i = 0; i < inputText.size() && i < standardText.size(); i++) {
    if (inputText[i] != standardText[i]) {
      errors[errorCnt++] = i; // 保存错误位置
    }
  }
  cout << "Errors: ";
  for (int i = 0; i < errorCnt; i++) {
    cout << errors[i] + 1 << " "; // 输出错误位置,需要加1转换为从1开始计数
  }
  cout << endl;
  return 0;
}

总之,"打字员"这个C++二级考题很好地练习了字符串的使用和逐个比对字符的方法,是一道不错的练手题目。

  
  

评论区