c++习题库.docx

上传人:b****5 文档编号:7471082 上传时间:2023-01-24 格式:DOCX 页数:40 大小:31.81KB
下载 相关 举报
c++习题库.docx_第1页
第1页 / 共40页
c++习题库.docx_第2页
第2页 / 共40页
c++习题库.docx_第3页
第3页 / 共40页
c++习题库.docx_第4页
第4页 / 共40页
c++习题库.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

c++习题库.docx

《c++习题库.docx》由会员分享,可在线阅读,更多相关《c++习题库.docx(40页珍藏版)》请在冰豆网上搜索。

c++习题库.docx

c++习题库

C++习题库答案

一.填空题:

(1)在用class定义一个类时,数据成员和成员函数的默认访问权限是【1】private。

(3)已知一个类AA,其默认构造函数的函数原型是【3】AA();。

(4)对一个类中的数据成员的初始化可以通过构造函数中的   【4】成员函数      实现,也可以通过构造函数中的  成员初始化列表P98【5】 实现。

(5)假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为  【6】10 。

(6)假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为     【7】 AB:

bb     。

(7)在#include命令中所包含的头文件,可以是【8】系统定义的头文件,也可以是【9】用户自定义的头文件。

(10)静态数据成员在定义或说明时,要加关键字static【12】。

(11)假定用户没有给一个名为AB的类定义析构函数,则系统为其隐含定义的析构函数为【13】~AB(){}。

(14)假定类AB中有一个公用属性的整型静态数据成员bb,那么在类体外对其进行初始化为0的语句为intAB:

:

bb=0;【16】。

(16)对于派生类(包含子对象)的构造函数,在定义对象时的构造函数的执行顺序为:

先执行【18】,在执行【19】,后执行【20】。

(17)派生类可以分为【21】、【22】、和保护派生。

由【23】得到的派生类,其基类的所有公有成员都只能成为它的私有成员,而由【24】得到的派生类,基类的所有公有成员在派生类中也是公有的。

(18)【25】函数不是类的成员函数,但是它可以访问类的私有数据成员。

(19)如果一个指针变量Pr指向类AA的对象a,现在要通过Pr访问AA的成员函数voidfun();其语句为【26】。

(20)已知类AB有两个构造函数,函数原型分别是AB(int);和AB(int,int);现在要创建一个属性值为2对象a,其定义语句为【27】。

(21)已知类AA,现在要定义它的复制构造函数。

则其函数原型为【28】。

(22)已知类AA,有下面的语句:

AAa;和AAb=a;那么创建对象b是通过调用【29】来完成的。

(23)在C++中,可以把具有相同内部存储结构和相同操作的对象看成属于同一类。

在指定一个类后,往往把属于这个类的对象称为类的【30】。

从语言角度来说,类是一种数据类型,而【31】是具有这种类型的变量。

(24)在C++中,动态多态性是通过定义【32】来实现的。

(25)C++允许一个派生类同时继承多个基类,这种行为称为【33】。

(26)C++提供【34】,使得在继承间接共同基类时只保留一份成员。

(27)现在要实现将double类型的数据转换为类Complex类型的对象,则在类Complex中实现的方法原型语句是【35】。

(28)【36】的作用是将一个类的对象转换成另一类型的数据。

(29)【37】的作用是将一个其他类型的数据转换成一个类的对象。

(30)用户定义的类型的数据,是不能直接用“〈〈”输出的,现在要实现输出类Complex(其数据成员为私有)的对象,则用户需要定义的“〈〈”重载函数原型为【39】。

它必须是类Complex的【39】函数。

(31)对双目运算符,重载为成员函数时,需要【40】参数,重载为友元函数时需要【41】参数。

(32)如果把双目运算符“+”定义为某个类Complex的运算符重载成员函数,C1和C2是Complex的对象,如果有表达式C1+C2;则编译程序对该表示式给出的解释语句为【42】。

(33)cin是【43】的一个对象,处理标准输入。

cout是【44】的对象,处理标准输出。

(34)进行文件操作时,需要包含【45】文件。

(35)使用如setw()的操作对数据进行格式输出时,应包含【46】文件。

(36)可以用来说明类中保护成员的关键字是【47】。

(37)【48】的功能是对对象进行初始化。

(38)在基类中用关键字【49】声明的成员函数为虚函数。

(39)静态多态性是通过【50】来实现的。

(40)类AA的复制构造函数的函数原型为【51】。

(41)设px是指向一个类动态对象的指针变量,则执行“delete px;”语句时,将自动调用该类的     【52】  。

(42)若需要把一个函数“void F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句       【53】   。

(43)若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用  【54】  头文件。

(44)执行语句序列intx=10,&r=x;cout<

输出结果为【55】。

(45)派生类中的成员不能直接访问基类中的【56】成员。

(46)多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但[]运算符只能作为类的【57】函数重载。

(47)请将下列类定义补充完整。

classBase{public:

voidfun(){cout<<"Base:

:

fun"<

classDerived:

publicBase{

public:

voidfun(){

【58】//显式调用基类的fun函数

cout<<"Derived:

:

fun"<

}};

(48)非成员函数应声明为类的【59】函数才能访问这个类的private成员。

(49)算法复杂度主要包括时间复杂度和【60】复杂度。

(50)要利用new动态分配一个int数据,并用pr指向,将该数据初始化为2,其定义语句为【61】。

(51)【62】属于静态多态性。

(52)面向对象程序设计有4个特点【63】、【64】、【65】、【66】。

(53)已知一个函数的原型为intfun(int=10,int=20);如果有如下调用语句fun();等价于调用【67】语句。

(54)如果有如下函数原型语句intmax(int=10,int);应修改为【67】才能保证该语句正确。

(55)重载函数至少在【68】、【69】或参数顺序上有所不同。

(56)已知inta=10,b=20;现在要设置a和b都以5个宽度输出,其正确的输出语句为【70】。

(57)现在要对D:

\abc.txt文件进行输入操作,可以定义【71】语句来实现。

(58)如果某个类中包含有子对象,则该类对象被创建,首先调用【73】,然后调用【74】。

(69)如果要将基类Shape中的方法floatArea()声明为纯虚函数,使用的语句为【75】。

二.选择题(下列各题ABCD四个选项中,只有一个是正确答案,请将正确答案填在相应的括号内。

1、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()

A.面向过程  B.面向对象  C.安全性  D.复用性

2、下列高级语言中,()是面向对象的程序设计语言。

A.BASICB.C++C.CD.PASCAL

3、下列关于C++函数的叙述中正确的是:

()

A.每个函数至少要有一个参数B.每个函数都必须返回一个值

C.函数在调用之前必须先声明D.函数不能自己调用自己

4、下列关于类和对象叙述错误的是:

()

A.一个类只能有一个对象B.对象是类的具体实例

C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系

5、有关类的说法不正确的是()

A.类是一种用户定义的数据类型

B.只有类中的成员函数才能存取类中的私有数据

C.在类中,如果不作特别说明,所有的数据均为私有数据类型

D.在类中,如果不作特别说明,所有的数据均为公有数据类型

6、有以下类的说明,指出错误的地方有()处

classcsample

{inta=2;

public:

csample(intval);

~csample(intval);

}

A.1B.2C.3D.4

7、有关构造函数说法不正确的是()

A.构造函数名和类名相同

B.构造函数在说明类的对象时自动执行

C.构造函数没有任何函数类型

D.构造函数有且只有一个

8、下列关于构造函数的描述中,错误的是()

A.构造函数可以设置默认参数;  B.构造函数在定义类对象时自动执行  

C.构造函数可以是内联函数;  D.构造函数不可以重载

9、有关析构函数说法不正确的是()

A.析构函数有且只有一个;  B.析构函数在类对象被撤消时自动执行  

C.析构函数没有任何函数类型;D.析构造函数可以有参数

10、()是析构函数的特征

A.一个类中只能定义一个析构函数

B.析构函数名与类名不同

C.析构函数的定义只能在类体内

D.析构函数可以有一个或多个参数

11、()函数的功能是对对象初始化

A.析构函数B.数据成员C.构造函数D.静态成员函数

12、如有下列类的声明:

CLASSFOO{intbar;};则类的成员bar是()

A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数

13、下列关于运算符重载叙述中,正确的是()

A.通过运算符重载可以定义新的运算符

B.有的运算符只能作为成员函数重载

C.若重载运算符—,则相应的函数名为—

D.重载一个2元运算符时,必须声明2个参数

14、考虑函数原型voidtest(inta,intb=7,char="*"),下面的函数调用中,属于不合法调用的是()

A.test(5);B.test(5,8);C.test(6,"#")D.test(0,0.,"*");

15、对于语句cout<

A.“cout”是一个输出流对象B.“endl”的作用是输出回车换行

C.“x”是一个变量D.“<<”称作提取运算符

16、下面有关重载函数的说法中正确的是()

A.重载函数必须具有不同的返回值类型;  B.重载函数形参个数必须不同;

C.重载函数必须有不同的形参列表  D.重载函数名可以不同;

17、下面描述中,表达错误的是()

A.公有继承时基类中的public成员在派生类中仍是public的  

B.公有继承时基类中的private成员在派生类中仍是private的  (应该是不可见的)

C.公有继承时基类中的protected成员在派生类中仍是protected的  

D.私有继承时基类中的public成员在派生类中是private的

18、应在下列程序划线处填入的正确语句是()

#include

classBase

{ public:

  voidfun(){cout<<"Base:

:

fun"<

};

classDerived:

publicBase

{ voidfun()

  {_____________//显示调用基类的函数fun()

    cout<<"Derived:

:

fun"<

  }

};

A.fun();B.Base.fun();C.Base:

:

fun();D.Base->fun();

19、下列字符串中,正确的C++标识符是()

A.foo-1B.2bC.newD._256

20、在C++中用于实现运行时多态性的是()

A.内联函数B.重载函数C.模板函数D.虚函数

21、()只能访问静态成员变量,静态成员函数和类以外的函数和数据不能访问类中的非静态成员变量。

A.静态函数B.虚函数C.构造函数D.析构函数

22、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用()提供对全局变量的访问。

A.域运算符B.类运算符C.重载D引用

23、在下列关键字中,可以用来说明类中保护成员的是()。

A.publicB.privateC.protectedD.friend

24、下列的各类函数中,()不是类的成员函数。

A.构造函数B.析构函数C.友元函数D.复制构造函数

25、对于公有派生来说,派生类不可以直接访问基类的()成员。

A.公有成员B.保护成员C.私有成员D.都不是

26、C++中的类有两种用法:

一种是类的实例化,另一种是通过(),派生出新的类。

A.复用B.继承C.单继承D.多继承

27、假定AB为一个类,则该类的拷贝构造函数的声明语句为()。

A.AB&(ABx)B.AB(ABx)C.AB(AB&x)D.AB(AB*x)

28、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()

A.ABoperator+(AB&,AB&);B.ABoperator+(AB&);

C.operator+(AB);D.ABoperator+();

29、假定AB为一个类,则执行“ABA[10];”语句时,系统自动调用该类的构造函数的次数为()。

A.10B.9C.8D.7

30、假定AB为一个类,则执行“AB a(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为 ()。

A.3             B.4              C.6              D.9

31、假定AB为一个类,则执行“AB*P;”语句时,系统自动调用该类的构造函数的次数为()。

A.10B.9C.8D.0

32、友元的作用()。

  A.提高程序的运行效率  B.加强类的封装性

  C.实现数据的隐藏性  D.增加成员函数的种类

33、下列关键字中,()不是类定义中使用的关键字。

  A.class  B.public  C.switch  D.private

34、关于类的定义格式的描述,()是错误的。

  A.类中的成员函数既可以在类内实现,也可以在类外实现

  B.一般类中包含有数据成员和成员函数

  C.类中成员有三种访问权限:

公有,私有和保护

  D.成员函数都应是公有的,数据成员都应是私有的

35、类模板的使用实际上是将类模板实例化成一个具体的()。

A.类B.对象C.函数D.模板类

36、下列静态数据成员的的特性中,()是错误的。

A.说明静态数据成员时,前边要加修饰符static

B.静态数据成员要在类体外进行初始化

C.引用静态数据成员时,要在静态数据成员名前加类名和作用域运算符

D.静态数据成员不是所有对象所共有的

37、已知一个类AA,其成员函数是intfun(),p是指向成员函数intfun()的指针,采用()定义p是正确的。

A.int*p=fun

B.int*p=AA:

fun

C.int(AA:

*P)()=&AA:

fun

D.int(AA:

*P)()=&fun

38、已知print()函数是一个类的常成员函数,它没有返回值,函数体为空下列表示中,()是正确的。

A.voidprint()const{}

B.constvoidprint(){}

C.voidconstprint(){}

D.voidprintconst(){}

说明:

1.常成员函数不能更新对象的数据成员

2.不能调用该类中没有const修饰的成员函数

39、关于new运算符,下列描述中,()是错误的。

A.它可以用来动态创建对象和对象数组

B.使用它创建的对象或对象数组,可以通过运算符delete删除

C.使用它创建对象时要调用构造函数

D.使用它创建对象数组必须指定初始值

40、关于delete运算符,下列描述中,()是错误的。

A.它必须用于new返回的指针

B.它也适用于空指针

C.对一个指针可以使用多次该运算符

D.指针名前只用一对方括号符,不管所删除的数组维数

41、已知:

类A中一个成员函数的说明如下:

voidSet(A&a);其中,A&a的含义是()。

A.指向类A的指针为a

B.将a的地址赋值给变量Set

C.a是类A对象的引用,用来作函数Set()的形参

D.变量A与a按位相与作为函数Set()的参数

42、已知类AA的成员函数为voidfun(inta,intb),下面哪个函数能够作为它的重载函数()。

A.voidfun(inta=0,intb)

B.voidfun(inta,intb=0)

C.voidfun(inta)

D.voidfun(intm,intn)

43、下列关于对象数组的描述,()是错误的。

A.对象数组的下标是从0开始的

B.对象数组的数组名是一个常量指针

C.对象数组的每一个元素是同一个类的对象

D.对象数组只能赋初值,而不能在定义后赋值

44、在下列函数原型中,可以作为类AA构造函数的是()。

A.voidAA(int);B.intAA();C.AA(int)const;D.AA(int);

45、下列关于this指针叙述,正确的是()。

A.任何与类相关的函数都有this指针

B.类的成员函数都有this指针

C.类的友元函数都有this指针

D.类的非静态成员函数才有this指针

47、运算符重载是对已有的运算符赋予多重含义,因此()。

A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义

B.可以改变一个已有运算符的优先级和操作个数

C.只能重载C++中已有的运算符,不能定义新运算符

D.C++中已经有的所有运算符都可以重载

48、下面是重载非成员函数的运算符函数原型,其中错误的是()

A.Fractionoperator+(Fraction,Fraction);

B.Fractionoperator-(Fraction);

C.Fractionoperator=(Fraction&,Fraction);

D.Fractionoperator+=(Fraction&,Fraction);

49、模板对类型的参数化提供了很好的支持,因此()。

A.类模板的主要作用是生成抽象类

B.类模板实例化时,编译器将根据给出的模板生成一个类

C.在类模板中的数据成员都具有同样类型

D.类模板中的成员函数没有返回值

50、下列关于派生类的描述中,()是错误的。

A.一个派生类可以作另一个派生类的基类

B.派生类至少有一个基类

C.派生类的成员除了它自己的成员外,还包含了它的基类的成员

D.派生类中继承的基类成员的访问权限到派生类中不变

51、()不是构造函数的特征。

A.构造函数名和类名相同

B.构造函数可以重载

C.构造函数可以设置默认参数

D.构造函数必须指定类型说明

52、派生类的对象对它基类成员中()是可以访问的。

A.公有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.私有继承的公有成员

53、对基类和派生类的关系描述中,()是错误的。

A.派生类是基类的具体化

B.派生类是基类的子集

C.派生类是基类的延续

D.派生类是基类的组合

54、派生类的构造函数的成员初始化列表中,不能包含()。

A.基类的构造函数

B.派生类中子对象的初始化

C.基类的子对象的初始化

D.派生类中一般数据成员的初始化

55、关于多继承二义性的描述中,()是错误的。

A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性

B.解决二义性的最常用的方法是对成员名的限定法

C.基类和派生类中同时出现的同名函数,也存在二义性问题

D.一个派生类是从两个基类派生来的,而这两个基类又有共同的基类,对该基类成员进行访问时,也可能出现二义性

56、设置虚基类的目的是()。

A.简化程序

B.消除二义性

C.提高运行效率

D.减少目标代码

57、带有虚基类的多层派生类构造函数的成员函数初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化()。

A.1次

B.2次

C.与下面的派生类的个数有关

D.多次

58、在C++语言中,若类C中定义了一个方法intf(inta,intb),那么下面()方法与该方法不能同时存在于类中。

A.intf(intx,inty)

B.intf(floata,intB)

C.floatf(intx,floaty)

D.intf(intX,floaty)

已知3个类O、P、Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3;类P和类Q是类O的派生类,其继承方式如下所示:

classP:

protectedO{};

classQ:

publicO{…};

作答下面3题。

59、关于方法F1的描述中正确的是)。

A.方法F1无法被访问

B.只有在类O内才能访问方法F1

C.只有在类P内才能访问方法F1

D.只有在类Q内才能访问方法F1

60、关于方法F2描述中正确的是()。

A.类O、P、Q的对象都可以访问方法F2

B.类P和Q的对象都可以访问方法F2

C.类O和Q的对象都可以访问方法F2

D.只有在类P内才可以访问方法F2

61、关于方法F3描述中正确的是()。

A.类O、P、Q的对象都可以访问方法F3

B.类O、P、Q的对象都不可以访问方法F3

C.类O和Q的对象都可以访问方法F3

D.类P和Q的对象都可以访问方法F3

62、下列关于一个类的静态成员的描述中,不正确的是()。

A.该类的对象共享其静态成员变量的值

B.静态成员变量可被该类的所有方法访问

C.该类的静态方法只能访问该类的静态成员变量

D.该类的静态数据变量的值不可修改

63、下列运算符中,()运算符在C++中不能重载。

A.?

B.+C.—D.〈=

64、关于动态联编的下列描述中,()是错误的

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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