- 1、本文档共57页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京交通大学C语言课件第4章中
可能觉得反复试验和判断正误也很麻烦。可以写: int main () { double x, y; ? for (x = -10.0; x = 10.0; x += 0.01) { y = cbrt(x); if (fabs(x - y*y*y) 1E-10) printf(Error: x=%f, cbrt(x)=%f\n, x, y); } printf(Test finished.\n); return 0; } 这里让计算机检查一系列计算。如果没有出错,程序只产生一行信息,报告程序完成。 设法确认程序对最基本的情况能正常工作 解决了基本情况后再考虑更复杂的情况 设法找出出错的规律性,检查出错时数据经过的执行流,逐步缩小可疑范围 在程序中加入输出语句,检查重要变量的值的变化情况 利用 IDE 的排错功能 测试程序、排除程序错误的最重要工具就是眼睛和头脑 程序的良好格式极其重要 排错程序里的错误 语法错误比较容易排错,第一章已经有简单介绍。 排错语义错误(逻辑错误)时,要设法确定错误根源,确定程序在什么执行流中产生错误,主要手段是选择适当的测试数据: 小结 选择结构的三种基本结构 循环结构的三种基本结构 循环三要素+循环不变关系 从循环中跳出:控制转移语句 递归 循环输入 Q A! 输入一系列字符 假设要由标准输入得到的多个字符送到标准输出,需要反复读入/输出字符,如何处理? while (....) { c = getchar(); putchar(c); } 怎样描述循环条件? 首先要问的是:希望在什么条件下结束循环? 两种可能: 1)程序内部确定,与实际输入无关。例如用计数器,读入若干个字符后结束。 #include stdio.h int main () {/* 读10个字符,输出各个字符的编码 */ int c, n; for (n = 0; n 10; ++n) { c = getchar(); printf(%d\n, c); } return 0; } 2)根据实际输入决定。循环条件与输入有关,得到满足条件的输入时结束循环。 例:输入读一行,输出各字符的编码: #include stdio.h int main () { int c; while (1) {/*循环执行多少次由输入行包含多少字符确定*/ c = getchar(); if (c == \n) break; /*遇到换行退出*/ printf(%d , c); } return 0; } 也可要求遇到其他字符结束。何时结束是一种约定。 处理任意的输入字符 标准库定义了符号常量EOF(End Of File/文件结束)。getchar遇文件结束返回EOF。 由键盘输入文件结束:用Ctrl-Z送文件结束信息。 如果标准输入定向到文件,getchar就会从文件读,文件读完时返回值EOF。 EOF是什么? 一般系统定义为-1(具体值并不重要)。程序里只需判断输入函数的返回值是否与EOF值相同。 while ((c = getchar()) != EOF) { ... ... /* 对输入的实际处理 */ } 注意:赋值操作有值,注意加括号。 EOF的值不能与任何字符编码相同。 getchar返回int 若getchar返回给char变量,可能无法给出EOF值。 如果用char变量,值超出char范围时结果无定义 char ch; /*EOF=-1*/ while ((ch = getchar()) != EOF) ... 总结: 正常情况下getchar返回读入的字符, 遇文件结束返回EOF值。 应该用int变量接收getchar的返回值,以保证正确判断输入结束。 例:统计(由标准输入得到的)文件中的字符个数。 #include stdio.h int main () { int c; long n = 0; while ((c = getchar()) != EOF) n++; printf(%ld\n, n); return 0; } 标准输入默认连接到键盘。 程序执行到getchar等待输入,得到输入后处理。 用Ctrl-Z发信息可使循环结束。 OS允许标准输入重新定向。将标准输入定向到文件可使文件成为getchar或scanf的输入源。 程序里不必区分实际输入来
文档评论(0)