首页 > 代码库 > 雪泥鸿爪-教学中的debug(13) EOF与换行符
雪泥鸿爪-教学中的debug(13) EOF与换行符
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测试程序时数据文件有这样的数据。
雪泥鸿爪-教学中的debug(13) EOF与换行符
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。