《C++语言基础教程》吕凤翥习题答案.docx

上传人:b****5 文档编号:12269025 上传时间:2023-04-17 格式:DOCX 页数:116 大小:59.65KB
下载 相关 举报
《C++语言基础教程》吕凤翥习题答案.docx_第1页
第1页 / 共116页
《C++语言基础教程》吕凤翥习题答案.docx_第2页
第2页 / 共116页
《C++语言基础教程》吕凤翥习题答案.docx_第3页
第3页 / 共116页
《C++语言基础教程》吕凤翥习题答案.docx_第4页
第4页 / 共116页
《C++语言基础教程》吕凤翥习题答案.docx_第5页
第5页 / 共116页
点击查看更多>>
下载资源
资源描述

《C++语言基础教程》吕凤翥习题答案.docx

《《C++语言基础教程》吕凤翥习题答案.docx》由会员分享,可在线阅读,更多相关《《C++语言基础教程》吕凤翥习题答案.docx(116页珍藏版)》请在冰豆网上搜索。

《C++语言基础教程》吕凤翥习题答案.docx

《C++语言基础教程》吕凤翥习题答案

第一章 习题

一、选择填空

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

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

Ada

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

A.Algol60;B。

Simula67;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

voidmain()

cout<〈"BeiJing”<〈"";

cout〈<"ShangHai"〈〈”\n";

cout〈〈”TianJing”〈〈endl;

}

1.BeiJjingShangHai

TianJing

2. #include〈iostream。

h〉

voidmain()

{

inta,b;

cout〈〈”inputa,b:

";

cin>〉a>>b;

cout〈<"a="<

cout<〈"a-b=”<

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

85

2.Inputa,b:

85

A=8,b=5

A—b=3

3.#include〈iostream。

h>

voidmain()

charc=’m’;

intd=5;

cout〈〈”d="〈

”;

cout<〈”c=”<

}

D=5,c=m

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

1、main()

{

cout<〈"Thisisastring!

”;

1.#include〈iostream.h>

voidmain()

{

cout<<”Thisisastring!

”;

输出结果:

Thisisastring!

2、#include〈iostream。

h>

voidmain()

{

cin〉〉x;

intp=x*x;

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

}

#include

voidmain()

intx;

cin>〉x;

intp=x*x;

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

}

输出结果:

3

p=9

3、#include〈iostream.h>

voidmain()

{ inti,j;

i=5;

intk=i+j;

cout<<"i+j="<

#include〈iostream.h>

voidmain()

{inti,j;

i=5;

j=3;

intk=i+j;

cout<<”i+j=”<

}

输出结果:

I+j=8

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

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

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

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

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

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

第二章 习题

一、选择填空

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

A.2;B。

4;C。

6;D8

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

A.char;B。

int;C。

longint;Dfloat

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

A.0xaf;B.0X1b;C.2fx;D。

0xAE

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

A.E15;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、在inta[5]={1,3,5};中,数组元素a[1]的值是()。

A。

1;B。

0;C。

3;D。

2

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

A.0;B。

5;C.6;D.2

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

A.chars1[]=”abcd;B.chars2[3]=”xyz";

C。

chars3[][3]={‘a’,’x’,'y'};D.chars4[2[3]={"xyz","mnp"};

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

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

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

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

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

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

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

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

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

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

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

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

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

已知:

inta[3][7];

A。

*(a+1)[5];B.*(*a+3);C。

*(*(a+1));D.*(&a[0][0]+2)

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

已知:

intm=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、下列表达式中,()是非法的.

已知:

inta=5;floatb=5。

5;

A。

a%3+b;B。

b*b&&++a;C。

(a〉b)+(int(b)%2);D.—--a+b

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

已知:

doublem=3.2;intn=3;

A。

m〈<2;B。

(m+n)|nC。

!

m*=n;D。

m=5,n=3.1,m+n

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

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

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

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

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

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

已知:

inta(5);b(6);

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、已知:

unsignedintx=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、已知:

inta(5),b(3);计算下列表达式得值以及a和b的值.

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、已知:

intd(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>

voidmain()

{

floatc,f;

cout〈<”华氏温度:

”;cin〉>f;

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

cout<〈"摄氏温度:

”〈〈c〈〈endl;

4.编程实现输入公里数,输出显示其英里数。

已知:

1英里=1.60934公里(用符号常量).

#include

h>

constfloatr=1.60934;

voidmain()

{

floatm,I;

cout〈〈”公里数:

”;

cin〉>m;

I=r*m;

cout<〈”英里数:

”<〈I〈

}

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

#include

h〉

voidmain()

intn,m;

cout<〈”输入一个整数:

";

cin>>n;

m=n|15;

cout〈<”结果为:

”〈

第三章 习题

一、选择填空

1.预处理命令在程序中都是以()开头的.

A。

*;B。

#;C.:

;D。

/;

2.文件包含命令中被包含的文件的扩转名()。

A.必须为.h;B.不能用.h;C.必须是.c;D.不一定是.h;

3.下列条件编译命令中

#if()

〈语句序列1〉

#else

〈语句序列2〉

#endif

A.整常量表达式;B.任何标识符;C.任意表达式;D。

被定义的宏名;

4.带参数的宏定义中,程序中引用宏定义的实参()。

A.只能是常量;B。

只能是整型量;C.只能是整形表达式;D.可以是任意表达式;

5.下列()是语句

A。

;;B。

a=17;C。

x+y;D.cout<〈”\n”;

6.下列for循环的次数为().

for(inti(0),x=0;!

x&&i<=5;i++)

A。

5;B.6;C.1;D.无限;

7.下列while循环的次数是()。

while(inti=0)i-—;

A.0;B.1;C.5;D。

无限;

8.下列do-while循环的循环次数为()。

已知:

inti(5);

do{cout〈

i—-;

}while(i!

=0);

A。

0;B.1;C.5;D。

无限;

9.下列for循环的循环体执行次数为()。

for(inti(0),j(10);i=j=10;i++,j-—)

A.0;B.1;C。

10;D.无限;

10.已知:

inta,b;下列switch语句中,()是正确的。

A.switch(a);

{casea:

a++;break;

caseb:

b++;break;

B.switch(a+b)

{case1:

a+b;break;

case2:

a—b

}|

C.switch(a*a)

{case1,2:

++a;

case3,4:

++b;

D.switch(a/10+b)

{case5:

a/5;break

default:

a+b;

}

11.下述关于循环体的描述中,()是错误的。

A.循环体中可以出现break语句和continue语句;

B.循环体中还可以出现循环语句;

C.循环体中不能出现goto语句;

D.循环体中可以出现开关语句。

12.下述关于goto语句的描述中,()是正确的。

A.goto语句可在一个文件中随意转向;

B.goto语句后面要跟上一个他所转向的语句;

C.goto语句可以同时转向多条语句;

D.goto语句可以从一个循环体内转到循环体外.

13.下述关于break语句的描述中,()是正确的。

A.break语句可用于循环体内,它将退出该重循环;

B.break语句可用于开关语句中,它将退出开关语句。

C.break语句可用于if体内,它将退出if语句;

D.break语句在一个循环体内可以出现多次。

14.下述关于开关语句的描述中,()是正确的。

A.开关语句中default子句可以没有,也可以有一个;

B.开关语句中每个语句序列中必须有break语句;

C.开关语句中default子句只能放在最后;

D.开关语句中case子句后面的表达式可以是整形表达式.

15.下列关于条件语句的描述中,(  )是错误的。

A.if语句中只有一个else子句;

B.if语句中可以有多个elseif子句;

C.if语句中if体内不能是开关语句;

D.if语句中的if体中可以是循环语句。

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

1.预处理命令是在进行编译时首先执行的,然后再进行正常编译。

2.宏定义命令是以分号结束的。

×

3.带参数的宏定义只能有1至2个参数。

×

4.文件包含命令所包含的文件是不受限制的。

×

5.条件编译命令只在编译时才有作用。

6.预处理命令的主要作用是提高效率的。

×

7.复合语句就是分程序。

×

8.条件语句不能作为多路分支语句.×

9.开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句×

10.开关语句中的default关键字,只能放在该语句的末尾,不能放在开头或中间。

×

11.Switch语句中必须有break语句否则无法退出switch语句。

×

12.While循环语句的循环体至少执行一次.×

13.Do—while循环可以写成while循环的格式。

14.For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。

×

15.只有for循环的循环体可以是空语句,其他种循环的循环体不能用空语句。

×

16.当循环体为空语句时,将说明该循环不作任何工作,只起延时作用。

×

17.循环是可以嵌套的,一个循环体内可以包含另一种循环语句.√

18.在多重循环中,内重循环的循环变量应用的次数比外重的多。

19.Break语句可以出现在各种循环体中.√

20.continue语句只能出现在循环体中。

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

1。

#include

h〉

#defineM1.5

#defineA(a)M*a

voidmain()

intx(5),y(6);

cout<

13。

5

2。

#include

h>

#defineMAX(a,b)(a)>(b)?

(a):

(b)

voidmain()

{

intm

(1),n

(2),p(0),q;

q=MAX(n,n+p)*10;

cout<〈q〈

20

3.

#include〈iostream.h>

#include”f1.cpp"

voidmain()

{

inta(5),b;

b=f1(a);

cout〈〈b〈

}

f1。

cpp文件内容如下:

#defineM(m)m*m

f1(intx)

inta(3);

return–M(x+a);

13

4。

#include

h>

voidmain()

{

inti(0);

while(++i)

if(i==10)break;

if(i%3!

=1)continue;

cout〈〈i<

}

1

4

7

5。

#include

h〉

voidmain()

inti

(1);

do{

i++;

cout〈<++i<〈endl;

if(i==7)break;

}while(i==3);

cout〈〈"Ok!

\n”;

}

3

5

Ok!

6。

#include〈iostream。

h〉

voidmain()

inti

(1),j

(2),k(3),a(10);

if(!

i)

a——;

elseif(j)

if(k)a=5;

else

a=6;

a++;

cout〈

if(i〈j)

if(i!

=3)

if(!

k)

a=1;

elseif(k)

a=5;

a+=2;

cout<〈a<

6

7

7.

#include

voidmain()

{

inti,j,a[8][8];

**a=1;

for(i=1;i〈8;i++)

{

**(a+i)=1;

*(*(a+i)+i)=1;

for(j=1;j〈i;j++)

*(*(a+i)+j)=*(*(a+i—1)+j-1)+*(*(a+i-1)+j);

for(i=0;i〈8;i++)

for(j=0;j〈=i;j++)

cout<<""〈〈*(*(a+i)+j);

cout<

}

7.1

11

121

1331

14641

15101051

1615201561

172135352171

8。

#include〈iostream.h〉

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1