字符统计
如果单纯遍历s[i]直到问号,通过率为百分之五十(原因:使用cin >> s;只能读取不含空格的一串字符),而且会报段错误。
#include<iostream>
#include<string>//包含getline
#include <cctype> // 包含isalpha函数的声明,可以用来检查给定的字符是否为字母。
//isdigit()函数来检查每个字符是否为数字(0-9)
using namespace std;
/*使用cin >> s;只能读取不含空格的一串字符。
如果想要处理包含空格的字符串,则需要使用getline(cin, s)
*/
int main(){
string s;
getline(cin, s); // 使用getline来读取一整行,包括空格
int Letters=0;
int Digits=0;
int Others=0;
int i=0;
for (char c : s) { // 使用范围for循环遍历字符串中的每个字符
if(c == '?') break; // 遇到问号停止计数
if(isalpha(c)){
Letters += 1;
}
else{
if(isdigit(c)){
Digits+=1;
}
else Others+=1;
}
}
cout<< "Letters="<<Letters<<endl;
cout<< "Digits="<<Digits<<endl;
cout<< "Others="<<Others<<endl;
}