这是代码,可以试一下,可行还请采纳:
用了 C++ 结构体来统计两个字符串的各种信息(长度、空格个数、字母个数、数字个数),并使用了函数来比较这些信息是否相同。
首先,使用两个结构体,一个结构体存储每个字符串的信息,结构体内有四个变量:len(存储字符串长度)、space(存储字符串中空格的个数)、alpha(存储字符串中字母的个数)、digit(存储字符串中数字的个数)。然后,循环读入两个字符串,并对每个字符串进行遍历,统计这些信息。
最后,使用函数对这两个结构体进行比较,判断它们的信息是否相同,并在输出中呈现出来。
该代码的基本思路是:读入字符串,统计信息,比较信息,输出结果
#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
struct StrInfo
{
int length, space, letter, digit;
};
bool compareStrInfo(StrInfo a, StrInfo b)
{
return a.length == b.length && a.space == b.space && a.letter == b.letter && a.digit == b.digit;
}
StrInfo countStrInfo(char str[])
{
StrInfo info;
info.length = strlen(str);
for (int i = 0; i < info.length; i++)
{
if (isspace(str[i])) info.space++;
else if (isalpha(str[i])) info.letter++;
else if (isdigit(str[i])) info.digit++;
}
return info;
}
int main()
{
char str1[2010], str2[2010];
cin.getline(str1, 2010);
cin.getline(str2, 2010);
StrInfo info1 = countStrInfo(str1);
StrInfo info2 = countStrInfo(str2);
cout << (compareStrInfo(info1, info2) ? "True" : "False") << endl;
cout << (info1.space == info2.space ? "True" : "False") << endl;
cout << (info1.letter == info2.letter ? "True" : "False") << endl;
cout << (info1.digit == info2.digit ? "True" : "False") << endl;
return 0;
}