批量处理数据程序设计-F文章统计
链接:https://ac.nowcoder.com/acm/contest/93961/F链接:https://ac.nowcoder.com/acm/contest/93961/F
来源:牛客网
有一篇文章,共有三行文字,每行有80个字符,要求分别统计出英文大写字母,小写字母,数字,空格以及其他字符的个数。
输入描述:
共有三行字符串a, b, c,长度均不超过100。
输出描述:
共5个整数,分别为英文大写字母,小写字母,数字,空格以及其他字符的个数。
示例1
输入
This is a boy.
He is 7 years.
He was born in 2013.
输出
3 27 5 10 3
这道题说让你找字符串中各个字符种类的个数,先把三个字符串加在一起,方便一会统计个数,for(char p:d)是用来遍历字符串d里每一个字符(这里每一个字符就是p),接下来使用if语句,将数据统计起来。但是要注意,当最后统计其他字符时,有些人会发现输出数据跟期望值不同那是因为使用 if 语句接下来要使用 else if 过度,结果才能是我们想要的3;如果用的都是 if ,结果会出现38,是因为最后程序将所有不属于空格的字符都归进了其他类,就比如正确的代码就像一堆苹果,每次拿出一部分,剩下的就是最后想要的。如果没有用 else if 就相当于每次拿出来后又放进去了,最后还会省下很多。
#include<iostream>
#include<string>
getline(cin,a);
getline(cin,b);
getline(cin,c);
string d=a+b+c;
int t1=0,t2=0,t3=0,t4=0,t5=0;
for(char p:d){
if(p>='A'&&p<='Z'){
t1++;
}
else if(p>='a'&&p<='z'){
t2++;
}
else if(p>='0'&&p<='9'){
t3++;
}
else if(p==' '){
t4++;
}
else{t5++;}
}
cout<<t1<<" "<<t2<<" "<<t3<<" "<<t4<<" "<<t5<<endl;
return 0;
}