正文

钱能的《C++程序设计教程》序列二:chapter2第一部分2005-07-21 12:14:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiangyu/3048.html

分享到:

声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处,欢迎大家批评指正。

这一序列说明:
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;

}

阅读(3569) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册