加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

《 C++ 》课后题参考答案(详细版 第1 2章)

(2011-01-04 17:58:42)
标签:

校园

分类: ❀.学习の栈

第一章 习题

一、             选择填空

1.   下列各种高级语言中,( )是面向对象的程序设计语言。

A.BASIC;            B.PASCAL;            C.C++   D.Ada

2.   下列各种高级语言中,(  )是最早提出了对象的概念。

A.Algol 60;          B.Simula 67;         C.Smalltalk;           D.C++

3.   下述面向对象抽象的原理中,(  )是不对的。

A. 数据抽象;      B. 行为共享; C.进化;   D. 兼容;

4.     )不是面向对象系统所包含的要数。

A. 重载;     B. 对象;       C. ;     D. 继承;

5.   关于C++C语言的关系的描述中,( )是错误的。

A. C语言是C++的一个子集;    B. C语言与C++是兼容的;  

C. C++C语言进行了一些改进;    D. C++C语言都是面向对象的;

6.   下面关于对象概念的描述中,(  )是错误的。

A.对象就是C语言中的结构变量;       B.对象代表着正在创建的系统中的一个实体;

C. 对象是一个状态和操作(或方法)的封装体;  D.对象之间的信息传递是通过消息进行的;

7.   下面关于类概念的描述中,(  )是错误的。

A.类是抽象数据类型的实现; B.类是具有共同行为的若干对象的统一描述体;

C.类是创建对象的样板;    D.类就是C语言中的结构类型;

8.    C++C语言作了很多改进,下列描述中(  )使得C语言发生了质变,即从面向过程变成为面向对象。

A.增加了一些新的运算符;                      B.允许函数重载,并允许设置缺省参数;  

C.规定函数说明必须用原型;                  D.引进了类和对象的概念;

9.   按照标识符的要求,(  )符号不能组成标识符。

A.连接符;   B. 下划线;     C.大小写字母;      D.数字字符;

10.   下列符号中,(  )不可作为分隔符。

A.;    B.;C.;     D.;

二、判断下列描述的正确性,对者划√,错者划×。

1.     C++引进了引用的概念,对编程带来了很多方便。

2.     C++允许使用友元,但是友元会破坏封装性。

3.     C++中使用了新的注释符(//),C语言中注释符()不能在C++中使用。×

4.     C++中为了减轻使用者的负担,与C语言相比较C++中减少了一些运算符。×

5.     C++程序中,每条语句结束时都加一个分号(;)。

6.     C++中标识符内的大小写字母是没有区别的。×

7.     C++中不允许使用宏定义的方法定义符号常量,只能用关键字const来定义符号常量。×

8.     在编写C++程序时,一定要注意采用人们习惯使用的书写格式,否则将会降低其可读性。

9.     C++是一种以编译方式实现的高级语言。

10. C++编译过程中,包含预处理过程、编译过程和连接过程,并且这三个过程的顺序是不能改变的。

11. 预处理过程是一般编译过程之后连接过程之前进行的。×

12. 源程序在编译过程中可能会出现一些错误信息,但在连接过程中将不会出现错误信息。×

三、分析下列程序的输出结果

1#include<iostream.h>

void main()

{

cout<<"BeiJing"<<" ";

cout<<"ShangHai"<<"\n ";

cout<<"TianJing"<<endl;

}

1.   BeiJjing ShangHai

TianJing

2. #include<iostream.h>

void main()

{

int a,b;

cout<<"input a,b:";

cin>>a>>b;

cout<<"a="<<a<<","<<"b="<<b<<endl;

cout<<"a-b="<<a-b<<"\n";

}

假定,输入如下两个数据:8 5

2.  Input a,b:8 5

A=8,b=5

A-b=3

3#include <iostream.h>

void main()

{

char c=’m’;

int d=5;

cout<<"d="<<d<<":";

cout<<"c="<<c<<"\n";

}

D=5,c=m

四、编译下列程序,改正所出现的各种错误信息,并分析输出结果:

1、  main ( )

{

cout<<"This is a string!";

}

1#include<iostream.h>

      void main()

{

cout<<”This is a string!”;

}

输出结果:This is a string!

2、  #include<iostream.h>

void main( )

{

cin>>x;

int p=x*x;

cout<<"p=<<p<<\n";

}

#include<iostream.h>

void main( )

{

int x;

cin>>x;

int p=x*x;

cout<<”p=”<<p<<”\n”;

}

输出结果:3

                p=9

3、  #include <iostream.h>

void main ( )

{ int i,j;

i=5;

int k=i+j;

cout<<"i+j="<<k<<"\n";

}

#include <iostream.h>

void main ( )

{int i,j;

i=5;

j=3;

int k=i+j;

cout<<”i+j=”<<k<<”\n”;

}

输出结果:I+j=8

五、通过对第四题中三个程序的所出现问题的修改,回答下列问题:

1.           从对第四题1题的修改中,总结出编程时应注意哪三个问题?

2.           C++程序中所出现的变量是否都必须先说明才能引用?

3.           使用cout和运算符<<输出字符串时应注意什么问题?

4.           有些变量虽然说明了但是没有赋值,这时能否使用?

5.           一个程序编译通过了并且运行后得到了输出结果,这个结果是否一定是正确的?

 

第二章 习题

 

一、             选择填空

1、  16位机中,int型字宽为( )字节。

A2 B 4C 6 D   8

2、  类型修饰符unsigned修饰( )类型是错误的。

A char;  B.   int;   C.long   int  ;    D       float

3、  下列十六进制的整型数常数表示中,( )是错误的。

A0xaf B. 0X1b;    C.  2fx;     D. 0xAE

4 、下列double型常量表示中,( )是错误的。

   AE15 B.  .35 C. 3E5;        D. 3E-5

5、下列字符常量表示中,( )是错误的。

A. ‘\105’ ;        B. ‘*’;  C.‘\4f’;   D. ‘\a’

6、下列字符串常量表示中, )是错误的。

A."\"yes\"or\"No\""; B."\’OK!\’"; C. "abcd\n";  D. "ABC\0"

7、下列变量名中,( )是合法的。

A.CHINA; B. byte-size;  C. double;  D. A+a

8、在int a[5]={1,3,5};中,数组元素a[1]的值是( )。

   A. 1; B. 0; C.3; D.2

9、在int b[][3]={{1},{3,2},{4,5,6},{0}};a[2][2]的值是( )。

   A.0; B. 5;        C.6;       D.2

10、下列给字符数组进行初始化中,( )是正确的。

   Achar s1[ ]="abcd; B. char s2[3]="xyz"; 

C. char s3[][3]={‘a’,’x’,’y’};    D. char s4[2[3]={"xyz","mnp"};

11、在int a=3,*p=&a; 中,*p的值是( )。

A. 变量a的地址值; B.无意义; C. 变量p的地址值;D.3

12、对于int *pa[5];的描述,()是正确的。

A.            pa是一个指向数组的指针,所指向的数组是5int型元素;

B.            pa是一个指向某个数组中第5个元素的指针,该元素是int型变量;

C.            pa[5]表示某个数组的第5个元素的值;

D.           pa是一个具有5个元素的指针数组,每个元素是一个int型指针

13、下列关于指针的运算中,()是非法的。

A. 两个指针在一定条件下,可以进行相等或不等的运算;

B. 可以用一个空指针赋值给某个指针;

C. 一个指针可以加上两个整数之差;

D.两个指针在一定条件下,可以相加

14、指针可以用来表示数组元素,下列表示中()是错误的。

已知:int a[3][7];

A. *(a+1)[5];  B. *(*a+3);  C. *(*(a+1));  D. *(&a[0][0]+2)

15、下列表示引用的方法中,() 是正确的。

已知:int m=10;

   A. int &x=m; B. int &y=10;  C. int &z;   D. float &t=&m

16、下列各运算符中,( )可以作用于浮点数。

A++;  B. %;    C. >>;  D. &

17、下列各运算符中,()不能作用于浮点数。

A/   B.&&;  C.!;   D.~

18、下列各运算符中,()优先级最高。

A. +(双目);B. *(单目) C.  <=;  D. *=

19、下列各运算符中,()优先级最低。

   A.?:B. | C. || D.=

20、下列各运算符中,()结合性从左到右。

A. 三目;B. 赋值; C.比较 D.单目

21、下列表达式中,()是非法的。

已知:int a=5; float b=5.5;

A. a%3+b; B. b*b&&++a; C.(a>b)+(int(b)%2); D. -- -a+b

22、下列表达式中,()是合法的。

已知:double m=3.2; int n=3;

A. m<<2; B. (m+n)|n C. !m*=n; D. m=5,n=3.1,m+n

23、下列关于类型转换的描述中,()是错误的。

A.     在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double

B.     逗号表达式的类型是最后一个表达式的类型;

C.     赋值表达式的类型是左值的类型;

D.    在由底向高的类型转换中是保值映射。

24、下列各表达式中,()有二义性。

已知:int a5; b6;

A. a+b>>3; B. ++a+b++; C.b+(a=3); D. ( a=3)-a++

二、             判断下列描述是否正确,对者划√,错者划×。

1、  任何字符常量与一个任意大小的整型数进行加减都是有意义的。×

2、  转义序列表示法只能表示字符不能表示数字。

3、  在命名标识符中,大小写字母是不加区别的。×

4、  C++的程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。

5、  C++中数组元素的下标是从0开始,数组元素是连续存储在内存单元中的。

6、  数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。×

7、  枚举变量的取值受到该枚举变量所对应的枚举表中的枚举符的局限。

8、  指针是用来存放某种变量的地址值的变量。这种变量的地址值也可以存放在某个变量中,存放某个指针的地址值的变量称为指向指针的指针,即二级指针。

9、  引用是用来给某个变量以别名的变量。,对引用的操作,实质上就是对被引用的变量的操作。

10、              运算符的优先级和结合性可以确定表达式的计算顺序。

11、              在说明语句   中,的值和的值是相等的。

12、              已知:表达式具有两用性。×

13、              移位运算符在移位操作中,无论左移还是右移,所移出的空位一律补0×

14、              某个变量的类型高是指该变量被存放在内存中的高地址处。×

15、              隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。×

16、              类型定义是用来定义一些C++中所没有的新的类型。×

三、             计算下列各表达式的值

(下列各表达式是相互独立的,不考虑前面对后面的影响。)

1、  已知:unsigned int x=015,y=0x2b;

A.x|y;  B.x^y;     C.x&y;           D.~x+~y;       E.x<<=3;      F.y>>=4.

A

B

C

D

E

F

47

38

9

4294967238

104

2

 

2、  已知:inti(10),j(5);

A.++i-j--;    B.i=i*=j;  C.i=3/2*(j=3-2);     D.~i^j; E.i&j|1; F.i+i&0xff.

 

A

B

C

D

E

F

6

50

1

-16

1

20

 

3、  已知:int a(5),b(3);计算下列表达式得值以及ab的值。

A.a&&b++;    B.a||b+4&&a*b;     C.a=1,b=2,a>b?++a:++b;      D.++b,a=10,a+5;

E.a+=b%=a+b; F.a!=b>2<=a+1.

A

B

C

D

E

F

0,5,3

1,5,3

3,1,3

15,10,4

8,8,3

1,5,3

 

4、  已知:int d(5),*pd=&d,&rd=d;

A.d+-rd;     B.*pd*rd; C.++*pd-rd; D.++rd-d.

 

A

B

C

D

0

25

0

0

 

5、  已知:’1’ASCII码的值为49

A.3+2<<1+1;     B.2*9|3<<1;    C.5%-3*2/6-3;      D.8= =3<=2&5;

E.!(‘3’>’5’)||2<6; F.6>=3+2-(‘0’-7).

A

B

C

D

E

F

20

22

-3

0

1

1

 

四、             按下列要求编写程序

1.  从键盘上输入两个int型数,比较其大小,并输出显示其中小的。

2.  从键盘上输入一个int型数,一个浮点型数比较其大小,并输出其中大的。

3.  输入一摄氏温度,编程输出华氏温度。已知:华氏温度转换为摄氏温度的计算公式如下:C=(F-32)*5/9

其中,F表示华氏温度,C表示摄氏温度。

#include <iostream.h>

void main()

 {

  float c,f;

  cout<<”华氏温度:”; cin>>f;

  c=(f-32)*5/9;

  cout<<” 摄氏温度:”<<c<<endl;

 }

4.  编程实现输入公里数,输出显示其英里数。已知:1英里=1.60934公里(用符号常量)。

 

#include <iostream.h>

   const float r=1.60934; 

void main()

{

 float m,I;

 cout<<” 公里数:”;

 cin>>m;

 I=r*m;

 cout<<”英里数:”<<I<<endl;

}

 

5.  输入一个int型数,将它的低4位(右4位)都置为1

 

#include <iostream.h>

void main()

 {

 int n,m;

 cout<<”输入一个整数:”;

 cin>>n;

 m=n|15;

 cout<<”结果为:”<<m<<endl;

}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有