C++复习题.docx
- 文档编号:28226443
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:26
- 大小:30.76KB
C++复习题.docx
《C++复习题.docx》由会员分享,可在线阅读,更多相关《C++复习题.docx(26页珍藏版)》请在冰豆网上搜索。
C++复习题
一、选择题
1.下面对于类的描述,(D)是错误的。
A.类是抽象数据类型的实现B.类是具有共同行为的若干对象的统一描述体
C.类是创建对象的模板D.类就是C语言中的结构类型
2.面向对象的(B)是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。
不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。
A.多态性B.封装性C.继承性D.重用性
3.C++源文件的扩展名为(A)。
A.cppB.cC.txtD.exe
4.C++的合法注释是(B)。
A./*ThisisaCprogram/* B.//ThisisaCprogram
C.“ThisisaCprogram”D.//ThisisaCprogram//
5.在C++语言中,(C)的陈述是正确的。
A.能使用关键字并区分大小写B.能使用关键字并不区分大小写
C.不能使用关键字并区分大小写D.不能使用关键字并不区分大小写
6.关于C++和C语言的描述中,(C)是错误的?
A.C是C++的一个子集B.C程序在C++环境可以运行
C.C++程序在C环境可以运行D.C++是面向对象的而C是面向过程的
7.运算符+、=、*、>=中,优先级最高的运算符是(C)。
A.+B.=C.*D.>=
7.假设OneClass为一个类,则该类的拷贝构造函数的声明语句为(C)。
A.OneClass(OneClassp);B.OneClass&(OneClassp);
C.OneClass(OneClass&p);D.OneClass(OneClass*p);
8.运算符+、<=、=、%中,优先级最低的运算符是(C)。
A.+B.<=C.=D.%
8.虚基类的最远派生类构造对象时,(B)被最先调用。
A.派生类自己的构造函数B.虚基类的构造函数
C.非虚基类的构造函数D.派生类中子对象类的构造函数
9.下列不合法的变量名为(A)。
A.intB.int1C.name_1D.name0
9.下列运算符中,(B)运算符在C++中不能重载。
A.?
B.[]C.newD.&&
10.已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?
++d:
a
A.9B.6C.8D.0
10.下列描述中,(D)是抽象类的显著特征。
A.可以说明虚函数B.可以进行构造函数重载
C.可以定义友元函数D.不能创建对象
11.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<’B’&&!
y)的值是(C)。
A.0B.语法错C.1D.“假”
12.对while、do…while循环结构,下面说法正确的是(B)。
A.只是表达形式不同
B.do…while结构中的语句至少执行一次
C.while结构中的语句至少执行一次
D.条件成立时,它们有可能一次也不执行
13.以下不正确的是(C)。
A.语句for(i=0;;i++)表示无限循环B.for(;;)表示无限循环
C.for()也表示无限循环D.while
(1)表示无限循环
14.对中断语句的说法下面不正确的是(B)。
A.用户可以指定中断的位置B.用户可以指定转移的位置
C.break语句可以跳出本循环D.continue语句可以结束本次循环
15.在C++语言中,关于参数默认值的描述正确的是(B)。
A.只能在函数定义时设置参数默认值
B.设置参数默认值时,应当从右向左设置
C.设置参数默认值时,应当全部设置
D.设置参数默认值后,调用函数不能再对参数赋值
16.在函数的返回值类型与返回值表达式的类型的描述中,错误的是(B)。
A. 函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的
B. 函数返回值的类型就是返回值表达式的类型
C. 函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型
D. 函数返回值类型决定了返回值表达式的类型
17.以下正确的说法是(D)。
A.用户若需要调用标准函数,调用前必须重新定义
B.用户可以直接调用所有标准库函数
C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数
D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数
18.如果一个函数无返回值,定义时它的函数类型应是(C)。
A.任意B.intC.voidD.无
19.下列哪个不是重载函数在调用时选择的依据(C)。
A.参数类型B.参数个数C.函数类型D.函数名
21.对数组名作函数的参数,下面描述正确的是(B)。
A.数组名作函数的参数,调用时将实参数组复制给形参数组
B.数组名作函数的参数,主调函数和被调函数共用一段存储单元
C.数组名作参数时,形参定义的数组长度不能省略
D.数组名作参数,不能改变主调函数中的数据
22.若有以下定义,则说法错误的是(D)。
inta=100,*p=&a;
A.声明变量p,其中*表示p是一个指针变量
B.变量p经初始化,获得变量a的地址
C.变量p只可以指向一个整形变量
D.变量p的值为100
23.下列关于结构体的说法错误的是(D)。
A.结构体是由用户自定义的一种数据类型
B.结构体中可设定若干个不同数据类型的成员
C.结构体中成员的数据类型可以是另一个已定义的结构体
D.在定义结构体时,可以为成员设置默认值
24.若有同下定义,下列说法错误的是(C)。
structem{
chara;
charb;
}
A.struct是结构体类型关键字B.em是结构体类型名
C.em是用户声明的结构体变量D.a,b是结构体成员名
25.若有以下定义,则赋值正确的是(D)。
inta,b,*p;
floatc,*q;
A.p=&cB.q=pC.q=&aD.q=newfloat
26.若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则(B)不是对a数组元素的正确引用(其中0≤i<10)。
A.p[i] B.*(*(a+i))C.a[p-a]D.*(&a[i])
B
27.如果x是整型变量,则合法的形式是(D)。
A.&(x+5)B.*x C.&*x D.*&x
29.在定义一个共用体变量时,系统为其分配存储空间的原则是( B )。
A.按所有成员需要的存储空间总和分配。
B.按成员中占存储空间最大者分配。
C.按成员占存储空间最小者分配。
D.按第一个成员所需的存储空间分配。
30.下列有关类的说法不正确的是(C)。
A. 对象是类的一个实例
B. 任何一个对象只能属于一个具体的类
C. 一个类只能有一个对象
D.类与对象的关系和数据类型与变量的关系相似
31.下面(B)项是对构造函数和析构函数的正确定义。
A.voidX:
:
X(),voidX:
:
~X()
B.X:
:
X(参数),X:
:
~X()
C.X:
:
X(参数),X:
:
~X(参数)
D.voidX:
:
X(参数),voidX:
:
~X(参数)
32.(C)的功能是对象进行初始化。
A.析构函数B.数据成员C.构造函数D.静态成员函数
33.拷贝构造函数具有的下列特点中,(D)是错误的。
A. 如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的
B. 拷贝构造函数只有一个参数,并且是该类对象的引用
C. 拷贝构造函数是一种成员函数
D.拷贝构造函数的名字不能用类名
34.关于友元的描述中,(A)是错误的。
A. 友元函数是成员函数,它被说明在类体内
B. 友元函数可直接访问类中的私有成员
C. 友元函数破坏封装性,使用时尽量少用
D. 友元类中的所有成员函数都是友元函数
35.类的析构函数的作用是(D)。
A.一般成员函数B.类的初始化C.对象初始化D.删除对象
36.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(A)。
A.publicB.protectedC.privateD.static
37.下列对派生类的描述中,(D)是错误的。
A. 一个派生类可以作为另一个派生类的基类
B. 派生类至少有一个基类
C. 派生类的成员除了它自己的成员外,还包含了它的基类成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
38.派生类的对象对它的(A)是可以访问的。
A.公有继承的基类的公有成员B.公有继承的基类的保护成员
C.公有继承的基类的私有成员D.保护继承的基类的公有成员
39.继承具有(B),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A)规律性B.传递性C.重复性D.多样性
40.多继承派生类构造函数构造对象时,(B)被最先调用。
A.派生类自己的构造函数B.虚基类的构造函数
C.非虚基类的构造函数 D.派生类中子对象类的构造函数
41.C++类体系中,能被派生类继承的是(B)。
A.构造函数B.虚函数C.析构函数D.友元函数
42.C++类体系中,不能被派生类继承的有(A)。
A.构造函数B.虚函数C.静态成员函数D.赋值操作函数
43.设置虚函数的声明中,正确的是(B)。
A.简化程序B.消除二义性C.提高运行效率D.减少目标代码
44.下列运算符中,(A)运算符在C++中不能重载。
A.?
:
B.[]C.newD.&&
45.下列关于动态联编的描述中,错误的是(D)。
A.动态联编是以虚函数为基础
B.动态联编是运行时确定所调用的函数代码的
C.动态联编调用函数操作是指向对象的指针或对象引用
D.动态联编是在编译时确定操作函数的(运行时)
46.编译时的多态性可以通过使用(A)获得。
A.虚函数和指针B.重载函数和析构函数C.虚函数和对象D.虚函数和引用
47.关于纯虚函数和抽象类的描述中,错误的是(B)。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现
B.抽象类是指具体纯虚函数的类
C.一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
48.下列描述中,(D)是抽象类的特征。
A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元函数D.不能说明其对象
49.要实现动态联编,必须通过(A)调用虚函数。
A.对象指针B.成员名限定C.对象名D.派生类名
50.关于read()函数的下列描述中,(D)是对的。
A. 函数只能从键盘输入中获取字符串
B. 函数所获取的字符多少是不受限制的
C. 该函数只能用于文本文件的操作中
D. 该函数只能按规定读取所指定的字符数
二、填空题
1.如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为__1__。
2.设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为___9_。
已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+4’的值为__e__。
3.已知c的ASCII码为十进制数99,设k为字符型变量,则表达式k=‘c’+1的值为___d___。
4.“A”与‘A’的区别是:
前者表示的是__字符串__,占用__2__个内存空间,后者表示的是___字符____,占用___1___个内存空间。
4.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为该类的成员;若要访问其它成员变量,需要通过该类成员函数或被声明为该类的友元函数。
5.当对象的生命期结束时,会自动执行该类的析构函数。
5..若有以下定义,inta[5]={1,3,5,7,9},*p=newint[5];则下列操作*p=a;是( )。
6.若有以下定义int*p=newint[10],则释放指针所指内存空间的操作是( delete[]p )。
6.普通函数只能传递变量参数,而函数模板提供了传递引用的机制。
7.数组与函数参数联系密切,当用数组元素作函数参数时,这是属于值传递;当数组名作为参数时,这是属于地址传递,对形参的改变可影响到实参。
8.函数的形参在未被调用之前不分配空间,函数的形参的类型要和实参的相同。
例题10:
利用“对象名.成员变量”形式访问的对象成员仅限于被声明为
(1)的成员;若要访问其他成员变量,需要通过
(2)函数或(3)函数。
答案:
(1)public
(2)成员函数(3)友元函数
10.类的成员分为_数据成员_____和__函数成员_____。
11.类中的数据和成员函数默认访问类型为private
12.类的成员函数可以在类内定义,也可以在类外定义
13.一个__类__和__对象_____的关系,正如基本数据类型与该类型的变量。
14.类完成了面向对象程序设计的_封装____特性。
15.类成员的默认访问方式是_private_____.
16.构造函数是_对象_被创建时自动执行,对象消失时自动执行的成员函数称为_析构函数.
17.一个类可以有___多个构造函数,有_1____析构函数。
19.在继承机制下,当对象消亡时,编译系统先执行派生类的析构函数,然后才执行派生类对象成员所在类的析构函数,最后执行基类的析构函数。
20.类的_静态__成员函数不能对类中的非静态成员进行默认访问。
21.类的__静态__数据成员是类所有对象共享的成员。
22.如果说明类B是类A的友元类,则类B的所有成员函数都是类A的__友元____函数。
23.友元函数__不是___类的成员函数。
(是/不是)
24.利用成员函数对二元运算符重载,其左操作数为this指针。
右操作数为成员函数参数。
26.类有两种用法:
一种是类的实例化,即生成类的__对象____;另一种是通过___基类____派生出新的类。
27.运算符重载后,原运算符的优先级和结合特性___不会__改变。
(会/不会)
29._纯虚函数是一个在基类中说明的虚函数,但未给出具体的实现,要求在其派生类实现。
31.文件的打开是通过使用类___fstream_____的成员函数___open____来实现的。
32.文件的关闭是通过使用类__fstream______的成员函数____close____来实现的。
三、判断题
1.函数在声明时,其参数标识符可省略,但参数的类型、个数与顺序不能省略。
(√)
2.由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行。
( × )
3.C++的复合语句是指由多条语句组成的。
( × )
4.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型。
(×)
5.静态数据成员是类的所有对象所共有的。
(√)
6.所谓异常处理只是对运行时出现的错误的处理。
(×)
7.假设AA是类名,则声明AA的类对象y1的语句:
AAy
(1);是正确的。
(×)
8.C++程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。
(×)
9.引用是用来给某个变量以别名的变量。
对引用的操作,实质上就是对被引用的变量的操作。
(√)
10.析构函数是一种函数体为空的成员函数。
(×)
11.说明或定义对象时,类名前面不需要加class关键字。
(√)
12.类模板不能直接使用,必须先实例化为相应的模板类,定义模板类的对象后才可使用。
(√)
四、程序判断题。
在下列程序的main()函数中,有些语句是错误的,请判断①-⑧条语句的对错(每条语句1分,总计8分)
#include
classA
{
inta1;
voidseta1(intx){a1=x;}
protected:
inta2;
voidseta2(intx){a2=x;}
public:
inta3;
voidseta3(intx){a3=x;}
};
classB
{
intb1;
voidsetb1(intx){b1=x;}
protected:
intb2;
voidsetb2(intx){b2=x;}
public:
intb3;
voidsetb3(intx){b3=x;}
};
classC:
publicA,privateB
{
intc1;
voidsetc1(intx){c1=x;}
protected:
intc2;
voidsetc2(intx){c2=x;}
public:
intc3;
voidsetc3(intx){c3=x;}
voidseta3(intx){a3=33;}
voidsetb3(intx){b3=33;}
};
voidmain()
{
Aaa;
Bbb;
Ccc;
①aa.seta1(12);错
②aa.a3=bb.b3+cc.c3;对
③bb.setb2(10);错
④bb.setb3(cc.c3);对
⑤cc.seta3(27);对
⑥cc.A:
:
seta3(33);对
⑦cc.setb3(22);对
⑧cc.B:
:
setb3(32);错
}
1.类定义的关键字是__.(class)
2.类的访问权限有__、__、__和__三种.(private、public、protected)
3.类的成员分为__和__.(数据成员、成员函数)
4.运算符__与类的对象一起使用,运算符__与指向类的对象的指针一起使用,可以访问类的成员.(.、->)
6.要存取类内的私有成员,需要一个界面,称为__.(接口)
8.类的变量称为__.(对象)
9.同一个类的两个对象,其数据成员是不同的,但__是共享的.(成员函数)
10.一个__和__的关系,正如基本数据类型与该类型的变量一样,如intx;.(类、对象)
11.__是用来初始化类的数据成员的一种特殊的成员函数。
(构造函数)
12.一个类有__个构造函数,有__个析构函数。
(多、一)
13.构造函数是__被创建时自动执行,对象消失时自动执行的成员函数称为__.(对象、析构函数)
14.设p是指向一个类动态对象的指针变量,则执行"deletep;"语句时,将自动调用该类的__.(析构函数)
15.对一个类中的数据成员的初始化可以通过构造函数中的__实现,也可以通过构造函数的__实现.(初始化表、函数体)
16.拷贝构造函数的参数通常是__.(某个对象的引用名)
17.类中常量数据成员的初始化工作必须在__完成.(构造函数初始化表)
18.类中对象数据成员的初始化工作必须在__完成.(构造函数初始化表)
20.类有两种用法:
一种是类的实例化,即生成类的对象;另一种是通过_派生出新的类.(继承)
21.如果类A继承了类B,则类A称为__,类B称为__.(派生类、基类)
22.C++语言提供的__机制允许一个派生类继承多个基类,即使这些基类是相互无关的.(多重继承)
23.面向对象程序设计的3大机制为:
__、__、__.(封装、继承、多态)
24.如果一个特定的类型S当且仅当它提供了类型T的行为时,则称类型S是类型T的__.(子类型)
25.声明虚函数的方法是在基类的成员函数原型前加上关键字__.(virtual)
26.在编译时就解决的函数调用称为__联编;在运行时才解决的函数调用称为__联编.(静态、动态)
27.__是一个在基类中说明的虚函数,但未给出具体的实现,要求在其派生类实现.(纯虚函数)
28.在类定义中,将__置于虚函数的函数原型的末尾可以声明该函数为纯虚函数.(=0)
29.如果一个类中有一个或多个纯虚函数,则这个类称为__.(抽象类)
30.类的静态成员分为__和__.(静态数据成员、静态成员函数)
31.静态数据成员在定义或说明时,前面要加上关键字__.(static)
32.类的__成员函数不能对类中的非静态成员进行默认访问.(静态)
33.类的__数据成员是类的所有对象共享的成员.(静态)
34.如果成员函数不需要访问类的__成员,则可以把它声明为静态成员函数.(非静态)
35.友元可以是__,也可以是__.(友元函数、友元类)
37.友元函数的声明可以放在类的__部分,也可以放在类的__部分,它们是没有区别的.(私有、公有)
38.若需要把一个函数"voidfun();"定义为一个类A的友元函数,则在类A的定义中加入一条语句:
__.(friendvoidfun();)
39.如果说明类B是类A的友元类,则类B的所有成员函数都是类A的__.(友元函数)
40.类中可以有许多相同名称、但参数类型或个数不同的成员函数,称为__.(函数重载)
41.设a和b是两个整型变量,我们用a+b的形式求这两个变量的和;设c和d为浮点型变量,我们用c+d的形式求这两个变量的和.显然运算符"+"具有不同的用途,这是__的例子.(运算符重载)
42.运算符函数中的关键字是__,它和运算符一起组成该运算符函数的函数名.(operator)
43.类中运算符重载一般采用两种形式:
__和__.(成员函数、友元函数)
44.运算符重载后,原运算符的优先级和结合性__改变.(会/不会)
45.对于双目运算符,若重载为类的成员函数,有__个参数;若重载为友元函数,则有__个参数.(1、2)
46.执行语句“x=(a=4,b=a++);”后,变量x、a、b的值依次为。
4,5,4
47.表述“x或y中有一个大于z”的C++语言表达式是。
x>z||y>z
48.执行语句“y=(x=3,z=--x);”后,变量的值依次为_。
2,2,2
49.设x为整型变量,表达数学关系式:
13 11 50.设有代码“staticinta[3][4]={{1,2},{3},{4,5,6}};”则a[1][1]值为。 0 51.若有定义: charu;intb;floatv;doubled; 则表达式u*b+d-v的值的类型为。 double 52.类的构造函数的主要作用是。 对对象进行初始化 53.C++将类继承分为和两种。 单一继承,多重继承 54.派生类可以定义其______中不具备的数据和操作。 基类 55.o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习题