C++ 程序设计语言参考资料.docx
《C++ 程序设计语言参考资料.docx》由会员分享,可在线阅读,更多相关《C++ 程序设计语言参考资料.docx(50页珍藏版)》请在冰点文库上搜索。
C++程序设计语言参考资料
C++程序设计语言参考资料
一、单项选择题(本大题共00分,共70小题,每小题0分)
1.在关键字private后面定义的成员为类的()成员。
A.私有
2.以下关于函数模板叙述正确的是()。
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数
3.C++语言的编译系统对宏命令的处理是()。
D.在对源程序中其它成分正式编译之前进行
4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的()。
A.可维护性
5.采用重载函数的目的是()。
D.使用方便,提高可读性
6.派生类的对象对它的基类成员中()是可以访问的。
A.公有继承的公有成员
7.在公有继承的情况下,基类成员在派生类中的访问权限()。
B.保持不变
8.关于面向对象系统分析,下列说法中不正确的是()。
B.面向对象分析阶段对问题域的描述比实现阶段更详细
9.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为()。
C.n
10.关于函数的返回值说法正确的是()。
A.由return语句返回时,只带回一值,其类型在函数定义时确定。
11.假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为()。
C.px->a
12.有以下程序
#include
voidmain()
{char*p[10]={"abc","aabdfg","dcdbe","abbd","cd"};
cout<
执行后输出结果是()
B.abbd
13.友员的作用之一是()
A.提高程序的运行效率
14.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。
A.intAA:
:
a()
15.下列关于函数的说法中,不正确的是()。
D.在一个函数内的复合语句中定义变量的作用域也是整个函数
16.使用派生类的主要原因是()
A.提高代码的可重用性
17.有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a,b;
b=p[5];
b中的值是()。
B.6
18.函数重载是指()。
A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
19.下列关于C++函数的说明中正确的是()。
D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式。
20.假设已经定义好了类student,现在要定义类derived,它是从student私有派生的,则定义类derived的正确写法是()
D.classderived:
:
privatestudent{//,,,,.}
21.下面有关构造函数的描述中,正确的是()。
B.构造函数的名字与类名完全相同
22.关于保护继承的说法正确的是()。
D.基类的公有成员、私有成员可被子类继承下来,性质不变,私有成员不被继承。
23.下列对引用的陈述中不正确的是()。
C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
24.当一个类对象离开它的作用域时,系统自动调用该类的()。
D.析构函数
25.下面有关重载函数的说法中正确的是()。
C.重载函数必须有不同的形参列表。
26.在C++中,继承方式有哪几种?
()
C.3
27.假定指针变量p定义为“int*p=newint(100);”,要释放p所指向的动态内存,应使用语句()。
A.deletep;
28.()不是构造函数的特征。
D.构造函数必须指定类型说明。
29.在声明类时,下面的说法正确的是()。
D.没有用private,public,protected定义的数据成员是公有成员
30.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为()。
C.(first+length-1)%MS
31.在一个被调用函数中,关于return语句使用的描述,()是错误的。
D.被调用函数中,一个return语句可返回多个值给调用函数。
32.由C++源程序文件编译而成的目标文件的缺省扩展名为()。
C.obj
33.如果类A被说明成类B的友元,则()。
D.类B不一定是类A的友元。
34.假定AB为一个类,则执行“AB*px=newAB[n];”语句时调用该类无参构造函数的次数为()。
A.n
35.面向对象方法的多态性是指()。
C.针对一消息,不同的对象可以以适合自身的方式加以响应
36.关于封装,下列说法中不正确的是()。
D.通过封装,对象的属性都是不可见的
37.运算符重载是对已有的运算符赋予多重含义,因此()。
C.只能重载C++中已经有的运算符,不能定义新运算符
38.通常,拷贝构造函数的参数是()
C.某个对象的引用名
39.构造函数是在()时被执行的。
B.创建对象
40.假定AB为一个类,则执行“ABr1=r2;”语句时将自动调用该类的()。
D.拷贝构造函数
41.假定AB为一个类,则执行ABx;语句时将自动调用该类的()。
B.无参构造函数
42.C++类体系中,不能被派生类继承的有()。
A.构造函数
43.下列常量中,()不是字符常量。
D.“a”
44.有以下语句structS{intg;charh;}T;则下面叙述中不正确的是()。
C.S是struct类型的变量
45.下列()的调用方式是引用调用。
C.形参是引用,实参是变量
46.对数组名作函数的参数,下面描述正确的是()。
B.数组名作函数的参数,主调函数和被调函数共用一段存储单元。
47.类中定义的成员默认为()访问属性。
B.private
48.关于成员函数特征的下列描述中,()是错误的。
A.成员函数一定是内联函数
49.面向对象软件开发中使用的OOA表示()。
A.面向对象分析
50.在C++中,关于下列设置参数默认的描述中,()是正确的。
C.设置参数默认值时,应该是先设置右边的再设置左边的。
51.假定一个字符串的长度为n,则定义存储该字符串的字符数组的长度至少为()。
C.n+1
52.下列定义中,()是定义指向数组的指针p。
A.int*p[5]
53.以下说法中正确的是()。
B.C++程序总是从main函数开始执行
54.结构中定义的成员默认为()访问属性。
A.public
55.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为()。
D.AB(){}
56.关于静态成员的描述中,()是错误的。
B.静态数据成员定义后必须在类体内进行初始化
57.关于内联函数说法错误的是()。
C.递归函数可以被用来作为内联函数
58.假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为()。
C.OneClass(OneClass&p);
59.下面有关友员函数的描述中,正确的说法是()
A.友员函数是独立于当前类的外部函数
60.假定一个类的构造函数为B(intx,inty){a=x--;b=a*y--;},则执行Bx(3,5);语句后,x.a和x.b的值分别为()。
C.3和15
61.下列静态数据成员的特性中,()是错误的。
C.静态数据成员不是所有对象所共用的
62.下面标识符中正确的是()
A._abc
63.假定变量x定义为“intx=5;”,要使rx成为x的引用(别名),rx应定义为()。
D.int&rx=x;
64.在intb[][3]={{1},{3,2},{4,5,6},{0}};b[2][2]的值是()。
D.6
65.关于对象和类的关系,说法正确的是()。
C.同一类的不同对象,其具有的操作可不同,具体的操作也不同。
66.下面有关静态成员函数的描述中,正确的是()
B.在建立对象前,就可以为静态数据成员赋值
67.下面对静态数据成员的描述中,正确的是()。
C.静态数据成员是类的所有对象共享的数据
68.C++源程序文件的缺省扩展名为()。
A.cpp
69.对于任一个类,用户所能定义的构造函数的个数至多为()。
D.任意个
70.假定AB为一个类,则()为该类的拷贝构造函数的原型说明。
C.AB(AB&x);
二、判断题(本大题共00分,共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++程序中,可以使用表达式s1.empty()判断s1是否空串。
√7.使用字符数组方式处理字符串数据时,一不小心可能出现数组越界的错误,而且往往不太容易发现这类错误。
√8.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++程序中,除了可按照C的方式处理文件外,还可以使用C++的文件流类库来处理文件数据。
×44.C++语言中,函数模板本质上和函数的重载是相同的,可以相互替代。
√45.C++程序中,文件流对象做函数形参时应该使用文件流对象的引用形式。
√46.C++程序中,对二进制文件的读写常使用文件流对象的read和write函数成员按数据块方式进行处理。
×47.C++程序中,可以通过文件流对象的seekp移动文件的读写位置指针。
√48.设有string类型对象s1,使用s1.clear()可以清楚s1中的所有字符内容。
√49.C++程序中,可以通过输出文件流对象和插入操作符(<<)配合将数据写入到数据文件中。
×50.C++程序中,内联函数调用的实现不需要系统付出任何代价。
三、填空题(本大题共00分,共30小题,每小题0分)
1.执行intp=newint操作得到的一个动态分配的整型对象为________。
1.参考答案:
*p
2.重载一个函数的条件是:
该函数必须在参数的个数或参数的__________上与其它同名函数有所不同。
2.参考答案:
类型
3.每个对象都是所属类的一个__________。
3.参考答案:
实例
4.C++语言的编译单位是扩展名为__________的__________文件。
4.参考答案:
cpp;程序
5.C++提供的预处理命令有宏定义命令,条件编译命令和____________。
5.参考答案:
文件包含命令
6.对象将其大部分实现细节隐藏起来,这种机制称为__________。
6.参考答案:
封装
7.如果一个函数直接或间接地调用自身,这样的调用称为____________调用。
7.参考答案:
递归
8.如果一个派生类的基类不止一个,则这种继承称为____________。
8.参考答案:
多继承(或多重继承)
9.当执行cin语句时,从键盘上输入每个数据后必须接着输入一个________符,然后才能继续输入下一个数据。
9.参考答案:
空白
10.在函数模板的参数中,用class修饰的参数称为__________参数。
10.参考答案:
虚拟类型(或类型)
11.定义一个函数模板要用到的第一个修饰符是____________。
11.参考答案:
template
12.基类和派生类的关系称为__________。
12.参考答案:
继承
13.C++语言是在_________语言的基础上发展起来的。
13.参考答案:
C
14.局部变量具有局部生存期,存放在内存的____________区中。
14.参考答案:
栈
15.在C++中,编译时的多态性是通过__________实现的,而运行时的多态性则是通过__________实现的。
15.参考答案:
重载;虚函数
16.当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到________的开始位置。
16.参考答案:
下一行
17.执行char*p=newchar(’a’)操作后,p所指向的数据对象的值为________。
17.参考答案:
’a’
18.C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和__________。
18.参考答案:
代码区(程序区)
19.在C++程序中包含一个头文件或程序文件的预编译命令为__________。
19.参考答案:
#include
20.一个函数的函数体就是一条_________语句。
20.参考答案:
复合
21.在C++中存储字符串”a+b=c”至少需要________个字节。
21.参考答案:
6
22.执行newchar[m][n]操作时的返回值的类型为________。
22.参考答案:
char(*)[n]
23.定义外部变量时,不用存储类说明符_________,而声明外部变量时用它。
23.参考答案:
extern
24.设enumPrintstatus{ready=2,busy,error};则cout<24.参考答案:
3
25.设enumPrintstatus{ready,busy,error};则cout<25.参考答案:
1
26.C++支持两种多态性:
_________时的多态性和__________时的多态性。
26.参考答案:
编译;运行
27.全局变量和静态局部变量具有静态生存期,存放在内存的____________区中。
27.参考答案:
全局数据
28.用于输出表达式值的标准输出流对象是_________。
28.参考答案:
cout
29.用于从键盘上为变量输入值的标准输入流对象是________。
29.参考答案:
cin
30.在C++中存储字符串”abcdef”至少需要________个字节。
30.参考答案:
7
四、程序阅读题(本大题共00分,共10小题,每小题0分)
1.写出下列程序的运行结果。
#include
voidmain()
{
intx;
int&p=x;
x=10;
p=x+10;
cout<}
1.参考答案:
20,20
2.写出下列程序的运行结果。
#include
voidFun()
{
intnum=20;
cout<<"TheFun'snumis"<}
voidmain()
{
intnum=10;
cout<<"Themain'snumis"<Fun();
{
intnum=30;
cout<<"TheField'snumis"<}
cout<<"Themain'snumis"<}
2.参考答案:
Themain'snumis10
TheFun'snumis20
TheField'snumis30
Themain'snumis10
3.请写出如下程序的输出结果:
#include
inta[]={2,4,6,8,10};
int&index(inti)
{returna[i];
}
voidmain()
{
inti;
index(3)=12;
for(i=0;i<=4;i++)
cout<}
3.参考答案:
2461210
4.阅读程序,写出运行结果。
#include
inta=5;
voidfun(intb)
{
staticinta=10;
a+=b++;
cout<}
voidmain()
{
intc=20;
fun(c);
a+=c++;
cout<}
4.参考答案:
3025
5.写出以下程序的运行结果。
#include
intfun(inta)
{
intb=0;
staticintc=3;
b++;c++;
return(a+b+c);
}
main()
{
inti,a=5;
for(i=0;i<3;i++)
cout<