C++输出输入小结
让编程改变世界
Change the world by program
输入输出小结
今天我是上的是小结课程,目标是对之前的内容进行总结和提升。
注意:小甲鱼希望我们的课程更多的是给大家带来实践编程的体验和培养自身解决问题的能力。
因此,咱这节课主要以讨论几个实例任务作为内容。希望亲爱的童鞋们通过尽可能独立的解决这几个问题。
试炼一号
题目:
这个程序将向用户提出一个“Y/N”问题,然后把用户输入的值赋值给answer变量。
要求:
针对用户输入‘Y’或‘y'和‘N’或‘n’进行过滤;
发掘程序可能存在的任何问题,想想为什么?。
实践开始!
试炼二号
题目:
编写一个“温度单位转换程序”,提示用户以【xx.x C】或【xx.x F】的格式输入。
要求:
如果用户输入的是34.2 C 程序将自动转换为 90.32 F 并输出!
实践开始!
对输入数据进行合法性检查
“不要相信任何程序的输入,尤其是由用户输入的东西”,这是计算机安防工作的基本原则。
往好处说,非法输入会让程序变得毫无用处;
往坏处说,非法输入会导致程序甚至是整个系统崩溃。
因此,知道如何对输入数据进行合法性检查与知道如何接受输入数据同样重要。
这是我们这系列要研究的一个重要课题!
对输入数据进行合法性检查的具体做法取决于具体的变量类型和它们的取值范围。
比较常见的检查项目包括:
检查某个数值是不是一个正数(例如商品的价格、老妈的年龄、老婆的体重)
检查某个数值是不是落在给定的范围(例如女朋友的年龄不能小于0或者大于120吧?)
检查某个字符是不是一个特定的值(例如前边的Y或者N)
前边的程序中我们已经见过了一些用来进行合法性检查的代码,例如question1和question2程序中使用switch()来判断用户是否输入了程序预期的值。
但是呢,还有一些潜伏的问题我们没有发掘出来:例如cin调用失败(无法把一个值赋值给一个变量)时,程序仍会像cin调用成功一样继续自欺欺人。举例……
解决这些问题的办法之一就是对cin 调用的结果不要做任何假设。
cin 对象有几个专门用来报告其工作情况的成员函数,它们将返回一个真/假值来表明cin 的状态。
eof():如果到达文件(或输入)末尾,返回true;
fail():如果cin 无法工作,返回true;
bad():如果cin 因为比较严重的原因(例如内存不足)而无法工作,返回true;
good():如果以上情况都没发生,返回true。
课后作业
1. 对question2 的合法性检查你觉得还有什么需要补充的吗?
2. 对const 和 #define 发表一下自己的看法吧~
[buy]
获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://urlxf.qq.com/?bUBF73I']视频下载[/Downlink]
[Downlink href='http://kuai.xunlei.com/d/LXCBXPEDXQPO']备胎下载[/Downlink]