题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2027
#include<stdio.h>
int main(){
int a;
while(scanf("%d\n",&a)!=EOF){
char c;
while(a--){
int an=0,en=0,in=0,on=0,un=0;
while(scanf("%c",&c)!=EOF&&c!='\n'){
switch(c){
case 'a':an++;break;
case 'e':en++;break;
case 'i':in++;break;
case 'o':on++;break;
case 'u':un++;break;
}
}
printf("a:%d\n",an);
printf("e:%d\n",en);
printf("i:%d\n",in);
printf("o:%d\n",on);
printf("u:%d\n",un);
if(a) printf("\n");
}
}
}
思路:为避免字符串一个一个的判断,采用每输入一个就开始判断。可以快速得到结果。
错误地方:一开始在第一个输入并没有加入‘\n’,导致每次读入都会都进去一个回车,导致其开始运行。
在第二个输入时没有加入回车的判断,而是在后面加一段判断回车便break的语句,导致一直失败。