种树的最佳时间是十年前,其次是现在。
学Bug=学霸哥(学霸中的一个Bug)
今天主要做练习,1.9节四个练习题比较多,再加上有了答案习题解答书貌似独立思考的那股劲少了许多,自己想感觉也写不出来,直接配合习题解答来进入学习状态吧。
练习题:
练习1-16 修改打印最长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多地打印文本。
解答思路:源程序定义了一个符号常量MAXLINE控制文本行最大长度,如果不限制那么就可以打印任意长度的输入行的长度,但根据此思路修改后编译没报错运行提示段错误;尽可能多的打印文本也没怎么理解。
图1.练习1-16习题解答
习题解答:演示结果及源代码如上图1,参考《C程序设计语言习题解答 原书第2版》。这个程序演示结果好像不符合问题要求,特意打了超过一千个字符,复制出来的并不完整,小于1000,为什么图中只有998个c,因为最后还加入了一个空白字符,所以是999小于1000。习题解答中也并没有去掉字符常量MAXLINE,是理解错了题目要求吗?这个答案是否正确学Bug持保留态度。
练习1-17 编写一个程序,打印长度大于80个字符的所有输入行。
解答思路:题目意图很清晰,打印输出大于80个字符的所有行。
图2.练习1-17习题解答
习题解答:演示结果及源代码如上图2,参考《C程序设计语言习题解答 原书第2版》。演示结果与想象的思路有一点出入,以为是任意输入多行之后按条件输出大于80个字符的行,但结果是输入行只要大于80字符回车就直接打印了出来。超过1000字符的还是没有完全输出。
练习1-18 编写一个程序,删除每个输入行末尾的空格及制表符,并删除完全是空格的行。
习题解答:演示结果及源代码如下图3,参考《C程序设计语言习题解答 原书第2版》。演示效果并不明显,因为是去除末尾的空白字符。这里的remove函数与之前的getline函数一样提示“类型冲突”错误,改为remove2后正常编译运行。
图3.练习1-18 习题解答
还一个练习没有抄完,今天唯一收获可能仅仅就是练练编程手感,学习情绪低落没有理解,对答案的效果总体也并不是很满意。明天继续吧。
加油!
坚持!
领取专属 10元无门槛券
私享最新 技术干货