雪泥鸿爪-教学中的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测试程序时数据文件有这样的数据。

时间: 2024-10-17 20:05:52

雪泥鸿爪-教学中的debug(13) EOF与换行符的相关文章

雪泥鸿爪-教学中的debug(9)

题目:http://125.221.232.254/JudgeOnline/problem.php?id=1008 1008: 排序(用链表实现) 时间限制: 20 Sec  内存限制: 128 MB提交: 885  解决: 474[提交][状态][讨论版] [Edit] [TestData] 题目描述 将一个杂乱无序的整数序列,按照从小到大的顺序排列并输出. 用第二章的相关知识实现,即先初始化一个空的单链表,然后每读入一个数据,将该数据存入结点并插入单链表,当然,插入时要从头结点开始向后(或从

雪泥鸿爪-教学中的debug(12) 可怕的字符类型

http://oj.hi-hi.cn/JudgeOnline/problem.php?cid=1088&pid=12 问题 M: 回文串 题目描述 回文串是从左到右或者从右到左读起来都一样的字符串,试编程判别一个字符串是否为回文串. 输入 输入一个字符串.串长度<255. 输出 判别输入的字符串是否为回文串,是输出"Y",否则输出"N". 样例输入 abcba 样例输出 Y 学生问 ,下面的代码为啥答案错误 ,自己试都可以来着 1 #include &

雪泥鸿爪-教学中的debug(8)

问题: 1 # include<stdio.h> 2 int main(void) 3 { 4 int x, y, z; 5 x = y = z = 0; 6 + + x || + +y || + + z; 7 printf("*** x=%d y=%d z=%d\n", x, y, z); 8 return 0; 9 } 程序的输出为什么是0 0 0, 而不是1 0 0. 答案: ++中间不能有空格 . 为什么程序编译能通过呢?因为+(-)不仅是二元运算符,而且是一元运算

Java去除字符串中的空格、回车、换行符、制表符 及 常用正则表达式

都采用的是JDK正则表达式,TranDataBase64是字符串 方法一: TranDataBase64 = TranDataBase64.replaceAll("[\\s*\\t\\n\\r]", ""); 方法二: Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(TranDataBase64); TranDataBase64 = m.replaceAll(

java去除字符串中的空格、回车、换行符、制表符

import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author zeze * 2016-08-15 */ public class StringUtils { public static String replaceBlank(String str) { String dest = ""; if (str!=null) { Pattern p = Pattern.compile("\\

c#去除字符串中的空格,回车,换行符,制表符

string l_strResult = str.Replace("\n", "").Replace(" ","").Replace("\t","").Replace("\r","");

sql -- 移除数据中的换行符和回车符

--移除回车符 update master_location SET street_number = REPLACE(street_number, CHAR(13), '') --移除换行符 update master_location SET street_number = REPLACE(street_number, CHAR(10), '')

生物化学“糖代谢”教学中的PBL教学模式

PBL(Problem-Based Learning)教学法是以问题为基础,以学生为主体,以小组讨论为形式,在教师的引导下,围绕某一医学专题或具体病例等问题进行研究的学习过程.在发达国家.国际着名学府 PBL 教学法的教学效果得到了一致的认可,表现出传统讲授教学方式难以达到的优势,其更能引起学生的学习热情及积极主动性,有效提高学生发现问题.分析问题及解决问题的能力,在小组讨论过程中有效地增强学生的表达及沟通能力,并形成团队意识.发挥团队的创造力,为以后从事临床护理工作打下坚实的基础. 1986

eclipse中的debug的用法

最基本的操作是: 1.首先在一个java文件中设断点,然后debug as-->open debug Dialog,然后在对话框中选类后--> Run 当程序走到断点处就会转到debug视图下. 2.F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over, 也就是执行本行代码,跳到下一行, 3.F7是跳出函数 4.F8是执行到最后. 1.Step Into (also F5) 跳入 2.Step Over (also F6) 跳过 3.Step