C++综合练习 答案.docx

上传人:b****6 文档编号:7160503 上传时间:2023-01-21 格式:DOCX 页数:71 大小:42.98KB
下载 相关 举报
C++综合练习 答案.docx_第1页
第1页 / 共71页
C++综合练习 答案.docx_第2页
第2页 / 共71页
C++综合练习 答案.docx_第3页
第3页 / 共71页
C++综合练习 答案.docx_第4页
第4页 / 共71页
C++综合练习 答案.docx_第5页
第5页 / 共71页
点击查看更多>>
下载资源
资源描述

C++综合练习 答案.docx

《C++综合练习 答案.docx》由会员分享,可在线阅读,更多相关《C++综合练习 答案.docx(71页珍藏版)》请在冰豆网上搜索。

C++综合练习 答案.docx

C++综合练习答案

第三章类和对象

一、选择题

1.在一个类的定义中,包含有(?

C?

)成员的定义。

?

?

?

?

?

?

?

A.数据?

?

?

?

?

B.函数?

?

?

?

?

C.数据和函数?

?

?

?

?

D.数据或函数

2.在类作用域中能够通过直接使用该类的(?

?

D)成员名进行访问。

?

?

?

?

?

?

?

A.私有?

?

?

?

?

B.公用?

?

?

?

?

C.保护?

?

?

?

?

D.任何

3.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为(?

?

D)。

?

?

?

?

?

?

?

A.x(a)?

?

?

?

?

B.x[a]?

?

?

?

?

C.x->a?

?

?

?

?

D.x.a

4.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为(?

B?

)。

?

?

?

?

?

?

?

A.x.a?

?

?

?

?

B.x.a()?

?

?

?

?

C.x->a?

?

?

?

?

D.x->a()

5.假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为(C?

?

)。

?

?

?

?

?

?

?

A.px(a)?

?

?

?

?

B.px[a]?

?

?

?

?

C.px->a?

?

?

?

?

D.px.a

6.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(?

?

D)。

?

?

?

?

?

?

?

A.x.a?

?

?

?

?

B.x.a()?

?

?

?

?

C.x->GetValue()?

?

?

?

?

D.x.GetValue()

7.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A?

?

)。

?

?

?

?

?

?

?

A.intAA:

:

a()?

?

?

?

?

B.intAA:

a()

?

?

?

?

?

?

?

C.AA:

:

a()?

?

?

?

?

?

?

?

?

D.AA:

:

inta()

8.假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为(A?

)。

?

?

?

?

?

?

?

A.a?

?

?

?

?

B.AA:

:

a?

?

?

?

?

C.a()?

?

?

?

?

D.AA:

:

a()

9.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字(?

?

B)放在函数原型或函数头的前面。

?

?

?

?

?

?

?

A.in?

?

?

?

?

B.inline?

?

?

?

?

C.inLine?

?

?

?

?

D.InLiner

10.在多文件结构的程序中,通常把类的定义单独存放于(?

D?

)中。

?

?

?

?

?

?

?

A.主文件?

?

?

?

?

B.实现文件?

?

?

?

?

C.库文件?

?

?

?

?

D.头文件

11.在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于(?

?

B)中。

?

?

?

?

?

?

?

A.主文件?

?

?

?

?

B.实现文件?

?

?

?

?

C.库文件?

?

?

?

?

D.头文件

12.在多文件结构的程序中,通常把含有main()函数的文件称为(A?

?

)。

?

?

?

?

?

?

?

A.主文件?

?

?

?

?

B.实现文件?

?

?

?

?

C.程序文件?

?

?

?

?

D.头文件

13.在C++程序中使用的cin标识符是系统类库中定义的(?

?

A)类中的一个对象。

?

?

?

?

?

?

?

A.istream?

?

?

?

?

B.ostream?

?

?

?

?

C.iostream?

?

?

?

?

D.fstream

14.在C++程序中使用的cout标识符是系统类库中定义的(?

?

B)类中的一个对象。

?

?

?

?

?

?

?

A.istream?

?

?

?

?

B.ostream?

?

?

?

?

C.iostream?

?

?

?

?

D.fstream

15.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为(?

?

D)。

?

?

?

?

?

?

?

A.int?

?

?

?

?

B.char?

?

?

?

?

C.AA?

?

?

?

?

D.AA*

16.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为(?

?

C)。

?

?

?

?

?

?

?

A.abc?

?

?

?

?

B.*this?

?

?

?

?

C.this?

?

?

?

?

D.this&

17.假定AA是一个类,“AA&abc();”是该类中一个成员函数的原型,若该函数存在对*this赋值的语句,当用x.abc()调用该成员函数后,x的值(A?

?

)。

?

?

?

?

?

?

?

A.已经被改变?

?

?

?

?

?

B.可能被改变

?

?

?

?

?

?

?

C.不变?

?

?

?

?

?

?

?

?

?

?

?

D.不受函数调用的影响

?

?

?

18.假定AA是一个类,“AA*abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值(?

?

C)。

?

?

?

?

?

?

?

A.已经被改变?

?

?

?

?

?

B.可能被改变

?

?

?

?

?

?

?

C.不变?

?

?

?

?

?

?

?

?

?

?

?

D.受到函数调用的影响

?

?

?

19.类中定义的成员默认为(?

B?

)访问属性。

?

?

?

?

?

?

?

A.public?

?

?

?

?

B.private?

?

?

?

?

C.protected?

?

?

?

?

D.friend

?

?

?

20.结构中定义的成员默认为(?

?

A)访问属性。

?

?

?

?

?

?

?

A.public?

?

?

?

?

B.private?

?

?

?

?

C.protected?

?

?

?

?

D.friend

?

?

?

21.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为(?

?

C)。

?

?

?

?

?

?

?

A.n?

?

?

?

?

B.n+1?

?

?

?

?

C.n-1?

?

?

?

?

D.n-2

?

?

?

22.对于一个类的构造函数,其函数名与类名(?

?

?

A)。

?

?

?

?

?

?

?

A.完全相同?

?

?

?

?

B.基本相同?

?

?

?

?

C.不相同?

?

?

?

?

D.无关系

?

?

?

23.对于一个类的析构函数,其函数名与类名(?

?

?

C)。

?

?

?

?

?

?

?

A.完全相同?

?

?

?

?

B.完全不同?

?

?

?

?

C.只相差一个字符?

?

?

?

?

D.无关系

?

?

?

24.类的构造函数是在定义该类的一个(?

?

?

C)时被自动调用执行的。

?

?

?

?

?

?

?

A.成员函数?

?

?

?

?

B.数据成员?

?

?

?

?

C.对象?

?

?

?

?

D.友元函数

?

?

?

25.类的析构函数是一个对象被(?

?

?

B)时自动调用的。

?

?

?

?

?

?

?

A.建立?

?

?

?

?

B.撤消?

?

?

?

?

C.赋值?

?

?

?

?

?

?

D.引用

?

?

?

26.一个类的构造函数通常被定义为该类的(?

?

?

A)成员。

?

?

?

?

?

?

?

A.公用?

?

?

?

?

B.保护?

?

?

?

?

C.私有?

?

?

?

?

D.友元

?

?

?

27.一个类的析构函数通常被定义为该类的(?

?

?

C)成员。

?

?

?

?

?

?

?

A.私有?

?

?

?

?

B.保护?

?

?

?

?

C.公用?

?

?

?

?

D.友元

?

?

?

28.假定AB为一个类,则执行“ABx;”语句时将自动调用该类的(?

?

?

B)。

?

?

?

?

?

?

?

A.带参构造函数?

B.无参构造函数?

?

C.拷贝构造函数?

?

D.赋值重载函数

?

?

?

29.假定AB为一个类,则执行“ABx(a,5);”语句时将自动调用该类的(?

?

A?

)。

?

?

?

?

?

?

?

A.带参构造函数?

B.无参构造函数?

?

C.拷贝构造函数?

?

D.赋值重载函数

?

?

?

30.假定AB为一个类,则执行“AB*s=newAB(a,5);”语句时得到的一个动态对象为____D___。

?

?

?

?

?

?

?

A.s?

?

?

?

?

?

?

B.s->a?

?

?

?

?

?

?

C.s.a?

?

?

?

?

?

?

D.*s

?

?

?

31.假定AB为一个类,则执行“ABr1=r2;”语句时将自动调用该类的(?

?

D?

)。

?

?

?

?

?

?

?

A.无参构造函数?

B.带参构造函数?

?

C.赋值重载函数?

?

D.拷贝构造函数

?

?

?

32.若需要使类中的一个指针成员指向一块动态存储空间,则通常在(?

B?

?

)函数中完成。

?

?

?

?

?

?

?

A.析构?

?

?

?

?

B.构造?

?

?

?

?

C.任一成员?

?

?

?

?

D.友元

?

?

?

33.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储(?

?

?

A)个整数。

?

?

?

?

?

?

?

A.n?

?

?

?

?

?

?

?

B.n+1?

?

?

?

?

?

C.n-1?

?

?

?

?

D.1

?

?

?

34.假定一个类的构造函数为“A(intaa,intbb){a=aa;b=aa*bb;}”,则执行“A?

x(4,5);”语句后,x.a和x.b的值分别为(?

?

?

C)。

?

?

?

?

?

?

?

A.4和5?

?

?

?

B.5和4?

?

?

?

?

C.4和20?

?

?

?

?

D.20和5

?

?

?

35.假定一个类的构造函数为“A(intaa=1,intbb=0){a=aa;b=bb;}”,则执行“Ax(4);”语句后,x.a和x.b的值分别为(?

D?

?

)。

?

?

?

?

?

?

?

A.1和0?

?

?

?

B.1和4?

?

?

?

?

C.4和1?

?

?

?

?

?

D.4和0

?

?

?

36.假定AB为一个类,则(?

?

?

B)为该类的拷贝构造函数的原型说明。

?

?

?

?

?

?

?

A.AB(ABx);?

?

?

B.AB(AB&x);?

?

?

?

C.voidAB(AB&x);?

?

?

?

D.AB(intx);

?

?

?

37.假定一个类的构造函数为“B(intax,intbx):

a(ax),b(bx){}”,执行“Bx(1,2),y(3,4);x=y;”语句序列后x.a的值为(?

?

C?

)。

?

?

?

?

?

?

?

A.1?

?

?

?

?

B.2?

?

?

?

?

C.3?

?

?

?

?

D.4

?

?

?

38.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为(?

?

?

D)。

?

?

?

?

?

?

?

A.AB(){a=0;}?

?

?

?

?

?

?

?

?

?

?

B.AB(intaa=0):

a(aa){}

?

?

?

?

?

?

?

C.AB(intaa):

a(aa){}?

?

D.AB(){}

?

?

?

39.假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为(?

?

?

C)。

?

?

?

?

?

?

?

A.AB(){}?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

B.AB():

a(0){}

?

?

?

?

?

?

?

C.AB(intaa=0){a=aa;}?

?

?

?

?

D.AB(intaa){}

?

?

?

40.对于任一个类,用户所能定义的构造函数的个数至多为(?

?

D?

)。

?

?

?

?

?

?

?

A.0?

?

?

?

?

B.1?

?

?

?

?

C.2?

?

?

?

?

D.任意个

?

?

?

41.对于任一个类,用户所能定义的析构函数的个数至多为(?

?

?

B)。

?

?

?

?

?

?

?

A.0?

?

?

?

?

B.1?

?

?

?

?

C.2?

?

?

?

?

D.任意个

?

?

?

42.假定AB为一个类,则执行“AB*px=newAB[n];”语句时将(?

?

A?

)。

?

?

?

?

?

?

?

A.动态分配一个数组?

?

?

?

?

B.动态分配一个对象

?

?

?

?

?

?

?

C.静态分配一个数组?

?

?

?

?

D.静态分配一个对象

?

?

?

43.设px是指向一个类对象的指针变量,则执行“deletepx;”语句时,将自动调用该类的(?

?

C?

)。

?

?

?

?

?

?

?

A.无参构造函数?

?

?

B.带参构造函数?

?

?

C.析构函数?

?

?

D.拷贝构造函数

?

?

?

44.当一个类对象离开它的作用域时,系统自动调用该类的(?

?

?

D)。

?

?

?

?

?

?

?

A.无参构造函数?

?

?

B.带参构造函数?

?

?

C.拷贝构造函数?

D.析构函数

?

?

?

45.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为(?

C)。

?

?

?

?

?

?

?

A.0?

?

?

?

?

B.1?

?

?

?

?

C.n?

?

?

?

?

D.n-1

?

?

?

46.假定AB为一个类,则执行“ABa[10];”语句时调用该类无参构造函数的次数为(?

?

D?

)。

?

?

?

?

?

?

?

A.0?

?

?

?

?

B.1?

?

?

?

?

C.9?

?

?

?

?

D.10

?

?

?

47.假定AB为一个类,则执行“AB*px=newAB[n];”语句时调用该类无参构造函数的次数为(?

?

?

A)。

?

?

?

?

?

?

?

A.n?

?

?

?

?

B.n-1?

?

?

?

?

C.1?

?

?

?

?

D.0

?

?

?

48.假定AB为一个类,则执行“ABa,b(3),*p;”语句时共调用该类构造函数的次数为(?

?

A?

)。

?

?

?

?

?

?

?

A.2?

?

?

?

?

B.3?

?

?

?

?

C.4?

?

?

?

?

D.5

?

?

?

49.假定AB为一个类,则执行“ABa

(2),b[3],*p[4];”语句时共调用该类构造函数的次数为(B?

?

?

)。

?

?

?

?

?

?

?

A.3?

?

?

?

?

B.4?

?

?

?

?

C.5?

?

?

?

?

D.9

?

?

?

50.假定AB为一个类,则执行“ABa,b

(2),c[3],*p=&a;”语句时共调用该类无参构造函数的次数为(?

D)。

?

?

?

?

?

?

?

A.5?

?

?

?

?

B.6?

?

?

?

?

C.3?

?

?

?

?

D.4

?

?

?

51.假定AB为一个类,则执行“AB*p=newAB(1,2);”语句时共调用该类构造函数的次数为(?

?

?

B)。

?

?

?

?

?

?

?

A.0?

?

?

?

?

B.1?

?

?

?

?

C.2?

?

?

?

?

D.3

?

?

?

52.假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete[]px;”语句时共调用该类析构函数的次数为(?

?

C?

)。

?

?

?

?

?

?

?

A.0?

?

?

?

?

B.1?

?

?

?

?

C.n?

?

?

?

?

D.n+1

?

?

?

53.对类对象成员的初始化是通过构造函数中给出的(?

?

D?

)实现的。

?

?

?

?

?

?

?

A.函数体?

?

?

?

?

B.初始化表?

?

?

?

?

C.参数表?

?

?

?

?

D.初始化表或函数体

?

?

?

54.对类中常量成员的初始化是通过构造函数中给出的(?

?

C?

)实现的。

?

?

?

?

?

?

?

A.函数体?

?

?

?

?

B.参数表?

?

?

?

?

?

?

C.初始化表?

?

?

?

?

D.初始化表或函数体

?

?

?

55.对类中引用成员的初始化是通过构造函数中给出的(?

?

?

C)实现的。

?

?

?

?

?

?

?

A.函数体?

?

?

?

?

B.参数表?

?

?

?

?

?

?

C.初始化表?

?

?

?

?

D.初始化表或函数体

?

?

?

56.一个类的静态数据成员所表示属性(?

C?

)。

?

?

?

?

?

?

?

A.是类的或对象的属性?

?

?

?

?

?

?

?

?

B.只是对象的属性

?

?

?

?

?

?

?

C.只是类的属性?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

D.类和友元的属性

57.类的静态成员的访问控制(?

D?

)。

?

?

?

?

?

?

?

A.只允许被定义为private

?

?

?

?

?

?

?

B.只允许被定义为private或protected?

?

?

?

?

?

?

?

C.只允许被定义为public?

?

?

?

?

?

?

?

?

D.可允许被定义为private、protected或public

?

?

?

58.静态成员函数对类的数据成员访问(?

?

B?

)。

?

?

?

?

?

?

?

A.是不允许的?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

B.只允许是静态数据成员

?

?

?

?

?

?

?

C.只允许是非静态数据成员?

?

?

?

?

D.可允许是静态数据成员或非静态数据成员

?

?

?

59.被非静态成员函数访问的类的数据成员(?

A)。

?

?

?

?

?

?

?

A.可以是非静态数据成员或静态数据成员?

?

?

B.不可能是类的静态数据成员

?

?

?

?

?

?

?

C.只能是类的非静态数据成员?

?

?

?

?

?

?

?

?

?

?

?

?

D.只能是类的静态数据成员

?

?

?

60.静态数据成员的初始化是在(?

?

?

D)中进行的。

?

?

?

?

?

?

?

A.构造函数?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

B.任何成员函数

?

?

?

?

?

?

?

C.所属类?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

D.全局区

?

?

?

61.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的(?

?

D?

)。

?

?

?

?

?

?

?

A.只能是公有成员?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

B.只能是保护成员

?

?

?

?

?

?

?

C.只能是除私有成员之外的任何成员?

?

?

?

?

D.具有任何权限的成员

?

?

?

62.引入友元的主要目的是为了(?

?

C?

)。

?

?

?

?

?

?

?

A.增强数据安全性?

?

?

?

?

?

?

?

?

?

?

?

B.提高程序的可靠性

?

?

?

?

?

?

?

C.提高程序的效率和灵活性?

?

?

?

D.保证类的封装性

?

?

?

63.一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明(?

?

A?

)。

?

?

?

?

?

?

?

A.需加上类域的限定?

?

?

?

?

?

?

?

?

?

?

B.不需加上类域的限定

?

?

?

?

?

?

?

C.类域的限定可加可不加?

?

?

?

?

?

?

D.不需要任何限定

?

?

?

64.一个类的友元不是该类的成员,与该类的关系密切,所以它(?

?

D?

)。

?

?

?

?

?

?

?

A.有this指针,有默认操作的对象?

?

?

?

?

?

?

?

?

B.没有this指针,可以有默认操作的对象

?

?

?

?

?

?

?

C.有this指针,不能执行默认操作

?

?

?

?

?

?

?

D.没有this指针,也就没有默认操作的对象

二、程序填充题

1.已知一个类的定义如下:

#include

classAA{

inta[10];

intn;

public:

voidSetA(intaa[],intnn);//用数组aa初始化数据成员a,用nn初始化数据成员n

intMaxA();//从数组a中前n个元素中查找最大值

voidSortA();//采用选择排序的方法对数组a中前n个元素,进行从小到大排序

voidInsertA();//采用插入排序的方法对数组a中前n个元素进行从小到大排序

voidPrintA();//依次输出数组a中的前n个元素

};

该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。

int____

(1)__AA:

:

Max()___

{

intx=a[0];

for(inti=1;i

if(a[i]>x)___

(2)x=a[i]___;

___(3)_returnx__;

}

2.已知一个类的定义如下:

#include

classAA{

inta[10];

intn;

public:

voidSetA(intaa[],intnn);//用数组aa初始化数据成员a,用nn初始化数据成员n

intMaxA();//从数组a中前n个元素中查找最大值

voidSortA();//采用选择排序的方法对数组a中前n个元素,进行从小到大排序

voidInsertA();//采用插入排序的方法对数组a中前n个元素进行从小到大排序

voidPrintA();//依次输出数组a中的前n个元素

};

voidAA:

:

SortA()

{

inti,j;

for(i=0;___

(1)i

intx=a[i],k=i;

for(j=i+1;j

if(a[j]

(2)_{x=a[j];k=j}__

a[k]=a[i];

___(3)a[i]=x___;

}

}

3.已知一个类的定义如下:

#include

classAA{

inta[10];

intn;

public:

voidSetA(intaa[],intnn);//用数组aa初始化数据成员a,用nn初始化数据成员n

intMaxA();//从数组a中前n个元素中查找最大值

voidSortA();//采用选择排序的方法对数组a中前n个元素,进行从小到大排序

voidInsertA();//采用插入排序的方法对数组a中前n个元素进行从小到大排序

voidPrintA();//依次输出数组a中的前n个元素

};

void___

(1)__AA:

:

Insert()_

{

inti,j;

for(i=1;i

intx=a[i];

for(j=i-1;j>=0;j--)

if(x

(2)_a[j+1]=a[j]__;

else___(3)break___;

a[j+1]=x;

}

}

4.已知一个类的定义如下:

#include

classAA{

inta[10];

intn;

public:

voidSetA(intaa[],intnn);//用数组aa初始化数据成员a,用nn初始化数据成员n

intMaxA();//从数组a中前n个元素中查找最大值

voidSortA();//采用选择排序的方法对数组a中前n个元素,进行从小到大排序

voidInsertA();//采用插入排序的方法对数组a中前n个元素进行从小到大排序

voidPrintA();//依次输出数组a中的前n个元素,最后输出一个换行

};

使用该类的主函数如下:

voidmain()

{

inta[10]={23,78,46,55,62,76,90,25,38,42};

AAx;

___

(1)__x.SetA(a,6)_;

intm=___

(2)_x.MaxA()__;

___(3)_x.PrintA()__;

cout<

}

该程序运行结果为:

237846556276

78

5.已知一个类的定义如下:

#include

classAA{

inta[10];

intn;

public:

voidSetA(intaa[],intnn);//用数组aa初始化数据成员a,用nn初始化数据成员n

intMaxA();//从数组a中前n个元素中查找最大值

voidSortA();//采用选择排序的方法对数组a中前n个元素,进行从小到大排序

voidPrintA();//依次输出数组a中的前n个元素,最后输出一个换行

};

使用该类的主函数如下:

voidmain()

{

inta[10]={23,78,46,55,62,76,90,25,38,42};

___

(1)_AAx__;

x.SetA(a,8);

int___

(2)_m=x.MaxA()__;

___(3)_x.Sort()__;

x.PrintA();

cout<

}

该程序运行结果为:

232546

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

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

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