英语老师要求学生按照如下规则写一串字母: 如果写了某个大写字母,下一个就必须写同个字母的小写,或者写字母表中下一个字母的大写; 如果写了某个小写字母,下一个就必须写同个字母的大写,或者写字母表中前一个字母的小写; 当然也可以什么都不写,就结束这个字母串。 例如 aAaABCDdcbBC 就是一个合法的字母串;而 dEFfeFGhI 就是非法的。注意 a 没有前一个字母, Z 也没有下一个字母。 现在面对全班学生交上来的作业,老师请你写个程序自动批改。
时间: 2024-02-15 07:05:05 浏览: 104
好的,这个问题可以使用C++语言来解决。下面是一个基本的程序,它可以读入一个字符串,并检查该字符串是否符合要求:
```c++
#include <iostream>
#include <string>
using namespace std;
bool isLegal(string str) {
int i = 0;
while (i < str.size()) {
if (str[i] >= 'A' && str[i] <= 'Z') {
if (i == str.size() - 1 || str[i + 1] != str[i] + 32) {
return false;
}
} else if (str[i] >= 'a' && str[i] <= 'z') {
if (i == str.size() - 1 || str[i + 1] != str[i] - 32) {
return false;
}
} else {
return true;
}
i += 2;
}
return true;
}
int main() {
string str;
cout << "请依次输入每个学生的作业(以空格分隔),输入done表示结束:" << endl;
while (cin >> str) {
if (str == "done") {
break;
}
if (isLegal(str)) {
cout << "合法" << endl;
} else {
cout << "非法" << endl;
}
}
return 0;
}
```
程序中,我们首先定义了一个isLegal函数,它用来判断一个字符串是否符合要求。函数中,我们使用了while循环来依次遍历字符串中的每个字符。对于每个大写字母,我们检查下一个字符是否为同个字母的小写;对于每个小写字母,我们检查下一个字符是否为同个字母的大写。如果满足条件,我们继续向后遍历;否则,返回false。如果遍历完整个字符串都没有发现不合法的情况,我们返回true。
在主函数中,我们使用了一个while循环来逐个读入学生的作业,并调用isLegal函数来检查其是否合法。如果合法,我们输出“合法”;否则,输出“非法”。
希望这个程序能够帮到您!
阅读全文