定义一个包含字符串的长度、空格个数、字母的个数和数字的个数的结构体,用户从键盘输入两个字符串(由字符a~z,A~Z,0~9以及空格组成),分别统计字符串的长度、空格个数、字母的个数和数字的个数并放入两个结构体变量中,然后调用一个函数,比较这两个结构体变量,判断四个统计项目中哪些相同哪些不同,输出判断的结果。输出四个整数,以空格隔开,分别表示字符串的长度、空格个数、字母的个数和数字的个数是否相同,相同输出1,不相同输出0
时间: 2024-02-22 12:55:36 浏览: 131
C语言数据结构顺序串
好的,我可以帮您解答这道题目。这里是一个可能的解法:
```c++
#include <iostream>
#include <cstring>
using namespace std;
struct StringInfo {
int length;
int spaceCount;
int letterCount;
int digitCount;
};
void countStringInfo(const string& str, StringInfo& info) {
info.length = str.size();
info.spaceCount = 0;
info.letterCount = 0;
info.digitCount = 0;
for (char c : str) {
if (c == ' ') {
info.spaceCount++;
} else if (isdigit(c)) {
info.digitCount++;
} else if (isalpha(c)) {
info.letterCount++;
}
}
}
int main() {
string s1, s2;
getline(cin, s1);
getline(cin, s2);
StringInfo info1, info2;
countStringInfo(s1, info1);
countStringInfo(s2, info2);
int sameLength = (info1.length == info2.length);
int sameSpaceCount = (info1.spaceCount == info2.spaceCount);
int sameLetterCount = (info1.letterCount == info2.letterCount);
int sameDigitCount = (info1.digitCount == info2.digitCount);
cout << sameLength << " " << sameSpaceCount << " " << sameLetterCount << " " << sameDigitCount << endl;
return 0;
}
```
这个程序定义了一个 `StringInfo` 结构体,用于保存字符串的统计信息。`countStringInfo` 函数用于统计一个字符串的信息并将结果保存到传入的结构体参数中。在 `main` 函数中,首先从输入中读取两个字符串 `s1` 和 `s2`,然后分别调用 `countStringInfo` 函数统计两个字符串的信息并保存到 `info1` 和 `info2` 两个结构体变量中。接下来比较这两个结构体变量的四个统计项,判断哪些相同哪些不同,并输出结果。
需要注意的是,题目要求输出四个整数,以空格隔开,分别表示字符串的长度、空格个数、字母的个数和数字的个数是否相同,相同输出1,不相同输出0。因此,在输出时需要分别输出四个判断结果的值,用空格隔开。
阅读全文