统计字符串信息
时间限制:1.0s 内存限制:256.0MB
问题描述
输入有两个字符串,统计出字符串的长度,空格个数,字母个数和数字个数,放入两个结构体中。用一个函数对两个结构体进行比较。判断4个统计量是否相同。
输入格式
输入有两行。各为一个字符串。
输出格式
输出有4行。第一行输出字符串长度是否相等,相等输出"True",不相等输出“False”。第二行输出字符串空格个数是否相等,相等输出"True",不相等输出“False”。第三行输出字符串字母(大小写均算)个数是否相等,相等输出"True",不相等输出“False”。第一行输出字符串数字个数是否相等,相等输出"True",不相等输出“False”。
样例输入
2 apples
Try this
样例输出
True
True
False
False
数据规模和约定
每个字符串长度不超过2000。
每个字符串只有数字,字母,空格,不含其它字符。
要求用结构体实现每个字符串统计量。用一个函数调用两个结构体比较。
一道关于结构体比较函数的问题,谁能帮蒟蒻看看?
如果不使用结构体,只能拿一半分
这是代码,可以试一下,可行还请采纳:
用了 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;
}
有偿直接加悬赏就行了
typedef struct _total
{
int len;
int spacelen;
int charlen;
int numlen;
}total;