编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
统计数据,4个数字,空格分开。
样例输入
!@#$%^QWERT 1234567
样例输出
5 7 4 6
计数就好了,录入字符串getline()函数能够录入空格(在string头文件里)。
其次利用计数,将4种数据类型计数初始化为0,再进行判断。
判断过程中,值得注意的有两点:
一是,if---else if---else判断(见代码)
if 的else在于前面的一个if不断排除的条件的else(不管是else if还是if)
二是要注意字符串字母的数字的范围,ASCII码表中A-Z到a-z区间内相隔几个其他字符串][等等
A-Z是65~90,a-z是90~122。其他的就没什么了
//统计字符串中" 字母 数字 空格 其他字符 "的个数
#include<iostream>
#include<string>
using namespace std;
int GetCount(string str1) {
int word = 0;
int num = 0;
int space = 0;
int otr = 0;
for (int i = 0; i < str1.length(); i++) {
/*ascii码值:A-Z 65到90 a-z 97到122*/
if ((str1[i] >= 'A' && str1[i] <= 'Z')||(str1[i]>='a' &&str1[i] <= 'z') ) {
++word; //没有其他区别话 ++word要快于word++
}
else if (str1[i] >= '0' && str1[i] <= '9')
{
++num;
}
else if (str1[i] == ' ') {
++space;
}
else {
++otr;
}
/*cout << "字母 数字 空格 其他" << endl;*/
/*cout << word << " " << num << " " << space << " " << otr<<endl;*/
}
cout << word << " " << num << " " << space << " " << otr;
return 0;
}
int main() {
string str1;
getline(cin, str1); //
GetCount(str1);
return 0;
}