http://oj.hi-hi.cn/JudgeOnline/problem.php?cid=1088&pid=9
问题 J: 实验8_5:统计元音字母个数
题目描述
编写一程序,用于统计从键盘输入的字符串中的元音字母(a,A,e,E,i,I,o,O,u,U)的个数。
输入
每行输入一字符串
输出
输出对应字符串中元音字母的个数。
样例输入
abcio efgaeio ak akkkksd
样例输出
3 5 2
学生问, 请问这个错在哪儿?样例输出是正确的啊
1 #include<stdio.h> 2 int main(void) 3 { 4 char ch; 5 int i=0; 6 while(scanf("%c",&ch)!=EOF) 7 { 8 if(ch==‘a‘||ch==‘A‘||ch==‘e‘||ch==‘E‘||ch==‘i‘||ch==‘I‘||ch==‘o‘||ch==‘O‘||ch==‘u‘||ch==‘U‘) 9 i++; 10 if(ch==‘\n‘) 11 { 12 printf("%d\n",i); 13 i=0; 14 } 15 } 16 return 0; 17 }
答案:
解决办法: 在return 0; 前面加上 if(i) printf("%d\n",i); 原因: 文件最后一行有不是以‘\n‘结尾而是直接EOF的,例如最后一行是这样的 ab<EOF> 没有回车。 键盘输入是行缓冲方式,必须回车,然后再按Ctrl+Z产生EOF , 所以从键盘输入无法产生我说的情况,但是OJ测试程序时数据文件有这样的数据。
时间: 2024-10-17 20:05:52