声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处,欢迎大家批评指正。 这一序列说明: 1.采用国内的教材:《C++程序设计教程》钱能主编 清华大学出版社 1999 2.在每一章练习解答前会有一个“疑难知识点”概述,这里只代表我自己的观点,也就是我自己现在还不能达到非常熟练,或者我初学时感觉比较模糊的知识。 3. 有一些答案来自网络,里面答案的选题编辑:张朝阳,责任编辑:徐培忠、林庆嘉。在这里表示感谢。 4.更多的学习和改进将在《The C++ programming language》答案序列中体现。 序列二:chapter2 一、疑难知识点 1.(p14,表2-2)float、double、long double的表示范围如何计算得到? 呵呵,以前好像有去计算出来,现在反而不知道怎么求解出来了,竟然可以表示这么大的数值。 2.实型常量采用指数形式表示的两点要求: (1).E或e前面必须要有数字 (2).E或e后面的指数必须要整数 3.反斜杠\可以和8进制或16进制数结合起来使用,以表示相应于该数的ACII码(P18) 4.有关枚举变量 不能把整数赋给枚举变量。但是枚举变量可以用整型的常量表达式进行初始化。 ,在《The C++ programming Language》(Special Editon)中文版,裘宗燕翻译第70页说,所赋的值不能超过该枚举的范围,这个范围是如何计算出来,我现在还不明白,谁懂的话可以介绍一下。但是在我机器上实验好像没有所谓的范围限制。 举例: #include<iostream> using namespace std; enum aa{a1=1,a2=2,a3=4,a4=8}; void main() { //aa bb=3;//wrong 不能把整数赋给枚举变量 aa cc=(aa)3;//ok aa cc1=aa(3);//ok,我就不理解为什么这样写还可以,其实这种不是很符合规则 aa dd=(aa)(a4/a2);//ok ,constant-expression aa dd1=aa(a4/a2); //aa dd1=a4/a2;//wrong /*按《The C++ programming Language》(Special Editon)中文版,裘宗燕翻译中所说的,这个枚举的范围是0——15,但是我这里实验好像不符合,因为这书是C++之父写的,也是很经典的一本书,我不敢确定是哪里出错,望指点?*/ aa ee=aa(99);//为什么说这个超出范围,不行,可是这里就是可以啊 aa ee1=aa(-2);//甚至这样都是可以的 aa ff=a2;//ok cout<<"cc="<<cc<<",cc1="<<cc1 <<",dd="<<dd<<",dd1="<<dd1 <<",ee="<<ee<<",ee1="<<ee1<<",ff="<<ff<<endl; } 5.分清声明和定义的区别?(可以参考《Thingking in C++》里面讲得很详细。分清初始化和赋值?(简单的说,定义后面直接赋值就是初始化) 6.I/O流控制 只需简单了解,若对输出形式有特别要求的再来查询就是了,对于8进制数,16进制数如何输出,我觉得还是有必要记住。 7.printf与scanf 若对这个命令熟悉那也是很不错,可以很好的利用,甚至再JAVA中都有其相对应的格式。若是不熟悉,我觉得也没有去学习,里面的规则可是挺繁的哦。好像C++之父是不推荐使用,在它的著作里面好像有论述 8.bool型的true值和int的1是完全相等的,而false和0也是完全相等的,在判断语句中非0的值(包括不是int型的)就当成true条件,但是true其实只等于1。当然,若把bool型当成一个整数值来使用会出现警告,但是不会出现编译错误。 9.当把\n用在cout输出语句中,不管是"\n"还是'\n',其作用都是一样的,起到换行的作用。这个规则可以用在其他类似的转义字符中如,\t等。 例子: #include<iostream> using namespace std; void main() { char a='\n'; cout<<"\n"; cout<<'\n'<<endl; cout<<"'\n'"<<endl; cout<<a<<endl; char b='\t'; cout<<"\t"; cout<<'\t'<<endl; cout<<"'\t'"<<endl; cout<<b<<endl; }

评论