重庆大学C++程序设计语言复习题及参考答案.docx
- 文档编号:9445292
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:55
- 大小:40.96KB
重庆大学C++程序设计语言复习题及参考答案.docx
《重庆大学C++程序设计语言复习题及参考答案.docx》由会员分享,可在线阅读,更多相关《重庆大学C++程序设计语言复习题及参考答案.docx(55页珍藏版)》请在冰点文库上搜索。
重庆大学C++程序设计语言复习题及参考答案
C++程序设计语言参考资料
一、单项选择题(本大题共0分,共70小题,每小题0分)
1.在关键字private后面定义的成员为类的(A)成员。
A.私有
B.公用
C.保护
D.任何
2.以下关于函数模板叙述正确的是(C)。
A.函数模板也是一个具体类型的函数
B.函数模板的类型参数与函数的参数是同一个概念
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数
D.用函数模板定义的函数没有类型
3.C++语言的编译系统对宏命令的处理是(D)。
A.在程序运行时进行
B.在程序连接时进行
C.和C++程序的其它语句同时进行编译
D.在对源程序中其它成分正式编译之前进行
4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的(A)。
A.可维护性
B.可复用性
C.兼容性
D.正确性
5.采用重载函数的目的是(D)。
A.实现共享
B.减少空间
C.提高速度
D.使用方便,提高可读性
6.派生类的对象对它的基类成员中(A)是可以访问的。
A.公有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
D.私有继承的公有成员
7.在公有继承的情况下,基类成员在派生类中的访问权限(B)。
A.受限制
B.保持不变
C.受保护
D.不受保护
8.关于面向对象系统分析,下列说法中不正确的是(B)。
A.术语“面向对象分析”可以用缩写00A表示
B.面向对象分析阶段对问题域的描述比实现阶段更详细
C.面向对象分析包括问题域分析和应用分析两个步骤
D.面向对象分析需要识别对象的内部和外部特征
9.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为(C)。
A.0
B.1
C.n
D.n-1
10.关于函数的返回值说法正确的是(A)。
A.由return语句返回时,只带回一值,其类型在函数定义时确定。
B.其类型由调用表达式决定。
C.函数可以没有返回值,这时在函数定义,函数的类型说明就没必要了。
D.函数调用就要有返回值,否则调用就没意义了。
11.假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为(C)。
A.px(a)
B.px[a]
C.px->a
D.px.a
12.有以下程序
#include
cout<
执行后输出结果是(B)
A.dcdbe
B.abbd
C.abc
D.abb
13.友员的作用之一是(A)
A.提高程序的运行效率
B.加强类的封装
C.实现数据的隐蔽性
D.增加成员函数的种类
14.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。
A.
int
AA:
:
a()
B.
int
AA:
a()
C.
AA:
:
a()
D.
AA:
:
int
a()
15.下列关于函数的说法中,不正确的是(D)。
A.在不同函数中可以使用相同的名字命名变量
B.形式参数是局部变量
C.在函数内部定义变量的作用域在本函数中
D.在一个函数内的复合语句中定义变量的作用域也是整个函数
16.使用派生类的主要原因是(A)
A.提高代码的可重用性
B.提高程序的运行效率
C.加强类的封装性
D.实现数据的隐藏
17.有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a,b;
b=p[5];
b中的值是(B)。
A.5
B.6
C.8
D.9
18.函数重载是指(A)。
A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的函数名字不同,但形参的个数或类型相同
D.两个以上的函数取相同的函数名,并且函数的返回类型相同
19.下列关于C++函数的说明中正确的是(D)。
A.内联函数就是定义在另一函数体内部的函数。
B.函数体的最后一条语句必须是RETURN语句。
C.标准C++要求在调用一个函数之前,必须先声明其原型。
D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式。
20.假设已经定义好了类student,现在要定义类derived,它是从student
私有派生的,则定义类
derived
的正确写法是(D)
A.
class
derived:
:
student
private{//,,,,
.}
B.
class
derived:
:
student
public{//,,,,
.}
C.
class
derived:
:
public
student{//,,,,
.}
D.
class
derived:
:
private
student{//,,,,
.}
21.下面有关构造函数的描述中,正确的是(B)。
A.构造函数可以带有返回值
B.构造函数的名字与类名完全相同
C.构造函数必须带有参数
D.构造函数必须定义,不能缺省
22.关于保护继承的说法正确的是(D)。
A.基类的公有成员、私有成员可被子类继承下来,而且性质不变。
B.基类的公有成员、私有成员可被子类继承下来,而且性质改变为保护成员。
C.基类的公有成员、私有成员可被子类继承下来,而且性质均改变为私有成员。
D.基类的公有成员、私有成员可被子类继承下来,性质不变,私有成员不被继承。
23.下列对引用的陈述中不正确的是(C)。
A.每一个引用都是其所引用对象的别名,因此必须初始化
B.形式上针对引用的操作实际上作用于它所引用的对象
C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D.不需要单独为引用分配存储空间
24.当一个类对象离开它的作用域时,系统自动调用该类的(D)。
A.无参构造函数
B.带参构造函数
C.拷贝构造函数
D.析构函数
25.下面有关重载函数的说法中正确的是(C)。
A.重载函数必须具有不同的返回值类型。
B.重载函数形参个数必须不同。
C.重载函数必须有不同的形参列表。
D.重载函数名可以不同。
26.在C++中,继承方式有哪几种?
(C)
A.1
B.2
C.3
D.4
27.假定指针变量p定义为“int*p=newint(100);”,要释放p所指向的
动态内存,
应使用语句(A)。
A.
delete
p;
B.
delete
*p;
C.
delete
&p;
D.
delete
[]p;
28.(D)不是构造函数的特征。
A.构造函数的函数名与类名相同;
B.构造函数可以重载;
C.构造函数可以设置缺省参数;
D.构造函数必须指定类型说明。
29.在声明类时,下面的说法正确的是(D)。
A.可以在类的声明中给数据成员赋初值
B.数据成员的数据类型可以是register
C.private,public,protected可以按任意顺序出现
D.没有用private,public,protected定义的数据成员是公有成员
30.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为(C)。
A.length+1
B.first+length
C.(first+length-1)%MS
D.(first+length)%MS
31.在一个被调用函数中,关于return语句使用的描述,(D)是错误的。
A.被调用函数中可以不用return语句。
B.被调用函数中可以使用多个return语句。
C.被调用函数中,如果有返回值,就一定要有return语句。
D.被调用函数中,一个return语句可返回多个值给调用函数。
32.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.
cpp
B.
exe
C.
obj
D.
lik
33.如果类A被说明成类B的友元,则(D)。
A.类A的成员即类B的成员。
B.类B的成员即类A的成员。
C.类A的成员函数不得访问类B的成员。
D.类B不一定是类A的友元。
34.
语句时调用该类无参构
假定AB为一个类,则执行"AB*px=newAB[n];造函数的次数为(A)。
A.n
B.n-1
C.1
D.0
35.面向对象方法的多态性是指(C)。
A.一个类可以派生出多个特殊类
B.一个对象在不同的运行环境中可以有不同的变体
C.针对一消息,不同的对象可以以适合自身的方式加以响应
D.一个对象可以是由多个其他对象组合而成的
36.关于封装,下列说法中不正确的是(D)。
A.通过封装,对象的全部属性和操作结合在一起,形成一个整体
B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)
C.通过封装,每个对象都成为相对独立的实体
D.通过封装,对象的属性都是不可见的
37.运算符重载是对已有的运算符赋予多重含义,因此(C)。
A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义
B.可以改变一个已有运算符的优先级和操作数个数
C.只能重载C++中已经有的运算符,不能定义新运算符
D.C++中已经有的所有运算符都可以重载
38.通常,拷贝构造函数的参数是(C)
A.某个对象名
B.某个对象的成员名
C.某个对象的引用名
D.某个对象的指针名
39.构造函数是在(B)时被执行的。
A.程序编译
B.创建对象
C.创建类
D.程序装入内存
40.假定AB为一个类,则执行“ABrl=r2;”语句时将自动调用该类的(D)。
A.无参构造函数
B.带参构造函数
C.赋值重载函数
D.拷贝构造函数
41.假定AB为一个类,则执行ABx;语句时将自动调用该类的(B)。
A.有参构造函数
B.无参构造函数
C.拷贝构造函数
D.赋值构造函数
42.C++类体系中,不能被派生类继承的有(A)。
A.构造函数
B.虚函数
C.静态成员函数
D.赋值操作函数
43.下列常量中,(D)不是字符常量。
A.'\005'
B.'\n'
C.'c'
D.“a”
44.有以下语句structS{intg;charh;}T;则下面叙述中不正确的是(C)。
A.S是结构体名
B.该结构体包含2个成员
C.S是struct类型的变量
D.T是structS类型的变量
45.下列(C)的调用方式是引用调用。
A.形参和实参都是变量
B.形参是指针,实参是地址值
C.形参是引用,实参是变量
D.形参是变量,实参是地址值
46.对数组名作函数的参数,下面描述正确的是(B)。
A.数组名作函数的参数,调用时将实参数组复制给形参数组。
B.数组名作函数的参数,主调函数和被调函数共用一段存储单元。
C.数组名作参数时,形参定义的数组长度不能省略。
D.数组名作参数,不能改变主调函数中的数据。
47.类中定义的成员默认为(B)访问属性。
A.public
B.private
C.protected
D.friend
48.关于成员函数特征的下列描述中,(A)是错误的。
A.成员函数一定是内联函数
B.成员函数可以重载
C.成员函数可以设置缺省参数值
D.成员函数可以是静态的
49.面向对象软件开发中使用的OOA表示(A)。
A.面向对象分析
B.面向对象设计
C.面向对象语言
D.面向对象方法
50.在C++中,关于下列设置参数默认的描述中,(C)是正确的。
A.不允许设置参数的默认值。
B.设置参数默认值只能在定义函数时设置。
C.设置参数默认值时,应该是先设置右边的再设置左边的。
D.设置参数默认值时,应该全部参数都设置。
51.假定一个字符串的长度为n则定义存储该字符串的字符数组的长度至少为(C)。
A.n-1
B.n
C.n+1
D.n+2
52.下列定义中,(A)是定义指向数组的指针p。
A.int*p[5]
B.int(*p)[5]
C.(int*)p[5]
D.int*p[]
53.以下说法中正确的是(B)。
A.C++程序总是从第一个定义的函数开始执行
B.C++程序总是从main函数开始执行
C.C++函数必须有返回值,否则不能使用函数
D.C++程序中有调用关系的所有函数必须放在同一个程序文件中
54.结构中定义的成员默认为(A)访问属性。
A.public
B.private
C.protected
D.friend
55.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为(D)。
A.AB(){a=0;}
B.AB(intaa=0):
a(aa){}
C.AB(intaa):
a(aa){}
D.AB(){}
56.关于静态成员的描述中,(B)是错误的。
A.静态成员可分为静态数据成员和静态成员函数
B.静态数据成员定义后必须在类体内进行初始化
C.静态数据成员初始化不使用其构造函数
D.静态数据成员函数中不能直接引用非静态成员
57.关于内联函数说法错误的是(C)。
A.不是任何一个函数都可定义成内联函数
B.内联函数的函数体内不能含有复杂的结构控制语句
C.递归函数可以被用来作为内联函数
D.内联函数一般适合于只有1〜5行语句的小函数
58.假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为(C)。
A.OneClass(OneClassp);
B.OneClass&(OneClassp);
C.OneClass(OneClass&p);
D.OneClass(OneClass*p);
59.下面有关友员函数的描述中,正确的说法是(A)
A.友员函数是独立于当前类的外部函数
B.一个友员函数不可以同时定义为两个类的友员函数
C.友员函数必须在类的外部进行定义
D.在类的外部定义友员函数时必须加上friend关键字
60.假定一个类的构造函数为B(intx,inty){a=x—;b=a*y—;},则执行Bx(3,5);语句后,x.a和x.b的值分别为(C)。
A.3和5
B.5和3
C.3和15
D.20和5
61.下列静态数据成员的特性中,(C)是错误的。
A.说明静态数据成员时前边要加修饰符static
B.静态数据成员要在类体外进行初始化
C.静态数据成员不是所有对象所共用的
D.引用静态数据成员时,要在其名称前加<类名>和作用域运算符
62.下面标识符中正确的是(A)
A._abc
B.3ab
C.int
D.+ab
63.假定变量x定义为“intx=5;”,要使rx成为x的引用(别名),rx应定义为(D)。
A.intrx=x;
B.intrx=&x;
C.int*rx=&x;
D.int&rx=x;
64.在intb[][3]={{1},{3,2},{4,5,6},{0}};b[2][2]的值是(D)。
A.0
B.2
C.5
D.6
65.关于对象和类的关系,说法正确的是(C)。
A.同属于一类的对象,具有相同的数据成员和成员函数。
B.对象是具体,是类的对象,同其他变量一样,先定义后使用。
C.同一类的不同对象,其具有的操作可不同,具体的操作也不同。
D.不同类的对象,可有相同的操作。
66.下面有关静态成员函数的描述中,正确的是(B)
A.在静态成员函数中可以使用this指针
B.在建立对象前,就可以为静态数据成员赋值
C.静态成员函数在类外定义是,要用static前缀
D.静态成员函数只能在类外定义
67.下面对静态数据成员的描述中,正确的是(C)。
A.类的不同对象有不同的静态数据成员值
B.类的每个对象都有自己的静态数据成员
C.静态数据成员是类的所有对象共享的数据
D.静态数据成员不能通过类的对象调用
68.C++源程序文件的缺省扩展名为(A)。
A.cpp
B.exe
C.obj
D.lik
69.对于任一个类,用户所能定义的构造函数的个数至多为(D)。
A.0
B.1
C.2
D.任意个
70.假定AB为一个类,则(C)为该类的拷贝构造函数的原型说明。
A.AB(ABx);
B.AB(intx);
C.AB(AB&x);
D.voidAB(AB&x);
二、判断题(本大题共0分,共50小题,每小题0分)
1.C++程序中初始化多维数组时,如果提供了数组的全部元素值,则可任意地选择省略其中一维的长度指定。
×
2.C++程序中,定义了:
fstreammyf;后,即可以使用myf对象处理输入文件,也可以使用myf处理输出文件。
√
3.C++程序中,要用二进制方式处理输入/输出文件,可以使用下面的语句序列打开指定文件。
fstreammyf;myf.open("data",ios:
:
in|ios:
:
out|ios:
:
binary);√
4.C++程序中,实现动态分配的运算符new和delete必须配合使用。
√
5.将字符串数据:
"Thisisateststring."作为string类型对象str的初始值,可以使用C++语句:
stringstr("Thisisateststring.");。
√
6.C++程序中,可以使用表达式sl.empty()判断s1是否空串。
√
7.使用字符数组方式处理字符串数据时,一不小心可能出现数组越界的错误,而且往往不太容易发现这类错误。
√
&C++程序中,如果要求将文件中的所有数据依次进行处理,则使用文件的顺序读写方式处理文件更为合理。
√
9.在C++程序中打开一个输入文件,文件的读位置指针在文件数据开始处。
√
10.C++程序中,如果要求将文件中的所有数据依次进行处理,则使用文件的随机读写方式处理文件更为合理。
×
11.C++程序中,默认情况下都是打开文本文件,处理二进制文件必须使用ios:
:
binary指定。
√
12.C++程序中可以使用C标准库中提供的字符分类标准函数,使用时需要用文件包含预处理命令将cctype头文件包含到源程序中。
√
13.C++程序中,下面的语句序列可以正确打开和关闭指定文件。
fstreammyf;myf.open("data",ios:
:
in|ios:
:
out);fclose(myf);×
14.C++程序中,要用文本方式处理输入/输出文件,可以使用下面的语句序列打开指定文件。
fstreammyf;myf.open("data",ios:
:
in|ios:
:
out);√
15.C++程序中,可以通过输入文件流对象的get函数从数据文件中读取字符数据。
√
16.C++中定义函数时,无论参数表如何表示,只要返回值类型不相同就能实现重载。
×
17.如果一个函数是某个类的友元函数,那么这个函数可以访问该类对象的私有成员和保护成员。
√
18.C++程序中,可以通过文件流对象的seekg移动文件的写位置指针。
×
19.C++程序中,使用C函数malloc分配的空间可以使用delete运算符来释放。
×
20.C++程序中,使用标准输入流对象cin无论与提取运算符〉〉配合还是与插入运算符<<配合,都可以实现程序中数据的操作。
×
21.将字符串数据:
"Thisisateststring."作为string类型对象str的初始值,可以使用C++语句序列:
chars[]="Thisisateststring.";stringstr(s);。
√
22.C++程序中,创建动态一维数组时,必须要使用相应数据类型的一级指针来表示动态数组的起始地址。
√
23.C++程序中,能够使用cin〉〉n;语句为变量n输入值的前提是:
用文件包含预处理语句包含了iostream头文件,并且用usingnamespacestd;语句导入了标准命名空间。
√
24.C++程序中,输入任何数据都不能指定域宽,只能以实际输入的数据为准。
×
25.C++程序中,可以通过文件流对象的tellg函数获取文件写位置指针与文件头之间的距离(字节数)。
×
26.C++程序中,定义了:
ofstreammyf;后,可以使用myf对象处理输入文件。
×
27.C++程序中,用文件流对象myf正确打开文本文件后,可用下面的循环结构显示文件中的所有(非空格)字符数据。
myf〉〉var;while(!
inFile.eof())
{cout<〉var;}√
28.C++程序中,可以通过输出文件流对象的put函数将字符数据写入到数据文件中。
√
29.C++程序中,string类型对象之间可以直接进行赋值运算。
√
30.C++程序中,使用文件流对象的open函数打开文件,使用文件流对象的close函数关闭文件。
√
31.C++程序中,处理的文件类型主要分为文本文件和二进制文件。
√
32.C++程序中,创建动态二维数组时,必须要使用相应数据类型的二级指针来表示动态数组的起始地址。
√
33.设一正确定义了string对象mystr,要将字符串"Iamastudent."输入作为mystr的内容,应该使用语句:
cin〉〉mystr;。
×
34.C++程序中,可以通过文件流对象的tellp函数获取文件读位置指针与文件头之间的距离(字节数)。
×
35.C++程序中,setprecision用于设定输出数据的有效位数,有效位数包含了数据的整数部分和小数部分。
√
36.C++程序中,使用setw指定的域宽格式控制仅对紧跟在其后的输出数据项有效。
√
37.C++程序中,因为不能用文件流对象做函数的形式参数,所以不能将文件处理部分编制成独立的函数。
×
38.C++程序中,cin流对象的输入域宽控制也可以使用cin对象的width函数成员实现。
√
39.C++程序中可以使用C标准库中提供的字符串处理标准函数,使用时需要用文件包含预处理命令将cstring头文件包含到源程序中。
√
40.C++程序中,函数模板并不是一个真正意义上的函数,编译器不会为其产生任何可执行代码。
√
41.C++程序中,可以通过输入文件流对象和提取操作符(〉〉)配合从数据文件中读出数据。
√
42.C++程序中,对于两个string类型对象而言,复合赋值运算(+=)和连接运算(+)是完全相同的运算。
×
43.C++程序中,除了可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 重庆大学 C+ 程序设计语言 复习题 参考答案