《c》复习题集及答案.docx
《《c》复习题集及答案.docx》由会员分享,可在线阅读,更多相关《《c》复习题集及答案.docx(127页珍藏版)》请在冰豆网上搜索。
![《c》复习题集及答案.docx](https://file1.bdocx.com/fileroot1/2023-6/3/58af55f4-2a54-4e3b-bd1d-b57482408913/58af55f4-2a54-4e3b-bd1d-b574824089131.gif)
《c》复习题集及答案
一、单选题
1.C++源程序文件的缺省扩展名为(A)。
A.cppB.exeC.objD.lik
2.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.cppB.exeC.objD.lik
3.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
A.cppB.exeC.objD.lik
4.编写C++程序一般需经过的几个步骤依次是(B)。
A.编译、编辑、连接、调试
B.编辑、编译、连接、调试
C.编译、调试、编辑、连接
D.编辑、调试、编辑、连接
6.能作为C++程序的基本单位是(C)。
A.字符B.语句C.函数D.源程序文件
8.C++程序的基本模块为(D)。
A.表达式B.标识符C.语句D.函数
10.存储以下数据,占用存储字节最多的是(D)。
A.0B.‘0’C.“0”D.0.0
38.以下说法中正确的是(B)。
A.C++程序总是从第一个定义的函数开始执行
B.C++程序总是从main函数开始执行
C.C++函数必须有返回值,否则不能使用函数
D.C++程序中有调用关系的所有函数必须放在同一个程序文件中
40.函数重载是指(A)。
A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的函数名字不同,但形参的个数或类型相同
D.两个以上的函数取相同的函数名,并且函数的返回类型相同
41.以下关于函数模板叙述正确的是(C)。
A.函数模板也是一个具体类型的函数
B.函数模板的类型参数与函数的参数是同一个概念
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数
D.用函数模板定义的函数没有类型
42.下列(C)的调用方式是引用调用。
A.形参和实参都是变量B.形参是指针,实参是地址值
C.形参是引用,实参是变量D.形参是变量,实参是地址值
43.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择(A)。
A.内联函数B.重载函数C.递归函数D.函数模板
55.以下正确的描述是(C)。
A.不允许设置参数的默认值
B.设置参数的默认值只能在定义函数时设置
C.设置参数的默认值时,应该设置右边的参数
D.设置参数的默认值时,应该全部参数都设置
56.采用重载函数的目的是(D)。
A.实现共享B.减少空间
C.提高速度D.使用方便,提高可读性
59.下面的标识符中,(C)是文件级作用域。
A.函数形参B.语句标号C.外部静态类标识符D.自动类标识符
60.以下叙述不正确的是(D)。
A.宏替换不占用运行时间B.宏名无类型
C.宏替换只是字符替换D.宏名必须用大写字母表示
61.C++语言的编译系统对宏命令的处理是(D)。
A.在程序运行时进行
B.在程序连接时进行
C.和C++程序的其它语句同时进行编译
D.在对源程序中其它成分正式编译之前进行
62.当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是(B)。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录
C.仅仅搜索源程序所在目录
D.搜索当前逻辑盘上的所有目录
63.当#include后面的文件名用尖括号括起来时,寻找被包含文件的方式是(A)。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录
C.仅仅搜索源程序所在目录
D.搜索当前逻辑盘上的所有目录
67.文件包含命令中被包含的文件的扩展名(C)。
A.必须是.hB.不能是.hC.可以是.h或.cppD.必须是.cpp
70.用new运算符创建一个含10个元素的一维整型数组的正确语句是(C)。
A.int*p=newa[10];B.int*p=newfloat[10];
C.int*p=newint[10];D.int*p=newint[10]={1,2,3,4,5}
80.假定p指向的字符串为”string”,则cout<
A.stringB.ringC.ingD.i
81.假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用(D)。
A.cout<<*s;B.cout<
82.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。
A.int*p=newint[30];B.int*p=newint(30);
C.int*p=new[30];D.*p=newint[30];
83.假定p是具有int**类型的指针变量,则给p赋值的正确语句为(B)。
A.p=newint;B.p=newint*;C.p=newint**;D.p=newint[10];
84.要使语句“p=newint[10][20];”能够正常执行,p应被事先定义为(D)。
A.int*p;B.int**p;C.int*p[20];D.int(*p)[20];
85.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book=newBOOK;”,则正确的语句为(A)。
A.strcpy(book->title,”WangTao”);B.strcpy(book.title,”WangTao”);
C.strcpy(*book.title,”WangTao”);D.strcpy((*book)->title,”WangTao”);
86.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book;”,则不正确的语句为(A)。
A.BOOK*x=newbook;B.BOOKx={"C++Programming",27.0};
C.BOOK*x=newBOOK;D.BOOK*x=book;
87.假定有“structBOOK{chartitle[40];floatprice;}book;”,则正确的语句为(B)。
A.BOOK&x=&book;B.BOOK&x=book;
C.BOOK&x=newBOOK;D.BOOK&x=BOOK;
88.下列对引用的陈述中不正确的是(C)。
A.每一个引用都是其所引用对象的别名,因此必须初始化
B.形式上针对引用的操作实际上作用于它所引用的对象
C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D.不需要单独为引用分配存储空间
91.假定指针变量p定义为“int*p=newint(100);”,要释放p所指向的动态内存,应使用语句(A)。
A.deletep;B.delete*p;C.delete&p;D.delete[]p;
92.假定指针变量p定义为“int*p=newint[30];”,要释放p所指向的动态内存,应使用语句(D)。
A.deletep;B.delete*p;C.delete&p;D.delete[]p;
93.假定变量x定义为“intx=5;”,要使rx成为x的引用(别名),rx应定义为(D)。
A.intrx=x;B.intrx=&x;C.int*rx=&x;D.int&rx=x;
94.关于消息,下列说法中不正确的是(B)。
A.发送消息的对象请求服务,接受消息的对象提供服务
B.消息的发送者必须了解消息的接收者如何相应消息
C.在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用
D.每个对象只能接收某些特定格式的消息
95.关于封装,下列说法中不正确的是(D)。
A.通过封装,对象的全部属性和操作结合在一起,形成一个整体
B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)
C.通过封装,每个对象都成为相对独立的实体
D.通过封装,对象的属性都是不可见的
96.面向对象方法的多态性是指(C)。
A.一个类可以派生出多个特殊类
B.一个对象在不同的运行环境中可以有不同的变体
C.针对一消息,不同的对象可以以适合自身的方式加以响应
D.一个对象可以是由多个其他对象组合而成的
97.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的(A)。
A.可维护性B.可复用性C.兼容性D.正确性
98.软件产品可被全部或部分地再用于新的应用的能力叫做软件的(B)。
A.可维护性B.可复用性C.兼容性D.正确性
99.软件产品与其他软件产品组合成一个整体的难易程度叫做软件的(C)。
A.可维护性B.可复用性C.兼容性D.正确性
100.软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的(D)。
A.可维护性B.可复用性C.兼容性D.正确性
101.面向对象软件开发中使用的OOA表示(A)。
A.面向对象分析B.面向对象设计
C.面向对象语言D.面向对象方法
102.面向对象软件开发中使用的OOD表示(B)。
A.面向对象分析B.面向对象设计
C.面向对象语言D.面向对象方法
103.关于面向对象系统分析,下列说法中不正确的是(B)。
A.术语“面向对象分析”可以用缩写OOA表示
B.面向对象分析阶段对问题域的描述比实现阶段更详细
C.面向对象分析包括问题域分析和应用分析两个步骤
D.面向对象分析需要识别对象的内部和外部特征
104.在一个类的定义中,包含有(C)成员的定义。
A.数据B.函数C.数据和函数D.数据或函数
105.在类作用域中能够通过直接使用该类的(D)成员名进行访问。
A.私有B.公用C.保护D.任何
106.在关键字public后面定义的成员为类的(B)成员。
A.私有B.公用C.保护D.任何
107.在关键字private后面定义的成员为类的(A)成员。
A.私有B.公用C.保护D.任何
108.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
A.x(a)B.x[a]C.x->aD.x.a
109.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为(B)。
A.x.aB.x.a()C.x->aD.x->a()
110.假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为(C)。
A.px(a)B.px[a]C.px->aD.px.a
111.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
A.x.aB.x.a()C.x->GetValue()D.x.GetValue()
112.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。
A.intAA:
:
a()B.intAA:
a()
C.AA:
:
a()D.AA:
:
inta()
113.假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为(A)。
A.aB.AA:
:
aC.a()D.AA:
:
a()
114.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字(B)放在函数原型或函数头的前面。
A.inB.inlineC.inLineD.InLiner
115.在多文件结构的程序中,通常把类的定义单独存放于(D)中。
A.主文件B.实现文件C.库文件D.头文件
116.在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于(B)中。
A.主文件B.实现文件C.库文件D.头文件
117.在多文件结构的程序中,通常把含有main()函数的文件称为(A)。
A.主文件B.实现文件C.程序文件D.头文件
118.一个C++程序文件的扩展名为(C)。
A..hB..cC..cppD..cp
119.在C++程序中使用的cin标识符是系统类库中定义的(A)类中的一个对象。
A.istreamB.ostreamC.iostreamD.fstream
120.在C++程序中使用的cout标识符是系统类库中定义的(B)类中的一个对象。
A.istreamB.ostreamC.iostreamD.fstream
121.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为(D)。
A.intB.charC.AAD.AA*
122.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为(C)。
A.abcB.*thisC.thisD.this&
123.假定AA是一个类,“AA&abc();”是该类中一个成员函数的原型,若该函数存在对*this赋值的语句,当用x.abc()调用该成员函数后,x的值(A)。
A.已经被改变B.可能被改变
C.不变D.不受函数调用的影响
124.假定AA是一个类,“AA*abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值(C)。
A.已经被改变B.可能被改变
C.不变D.受到函数调用的影响
125.类中定义的成员默认为(B)访问属性。
A.publicB.privateC.protectedD.friend
126.结构中定义的成员默认为(A)访问属性。
A.publicB.privateC.protectedD.friend
127.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为(C)。
A.nB.n+1C.n-1D.n-2
128.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为(C)。
A.length+1B.first+length
C.(first+length-1)%MSD.(first+length)%MS
129.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为(D)。
A.length+1B.first+length
C.(first+length-1)%MSD.(first+length)%MS
130.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为(B)。
A.first+1B.(first+1)%MS
C.(first-1)%MSD.(first+length)%MS
131.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队非空,则进行插入时必须把新结点的地址赋给(D)。
A.elemHeadB.elemTail
C.elemHead->next和elemHeadD.elemTail->next和elemTail
132.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队为空,则进行插入时必须把新结点的地址赋给(C)。
A.elemHeadB.elemTail
C.elemHead和elemTailD.elemHead或elemTail
133.队列具有(A)的操作特性。
A.先进先出B.先进后出C.进出无序D.进出任意
134.栈具有(B)的操作特性。
A.先进先出B.先进后出C.进出无序D.进出任意
135.对于一个类的构造函数,其函数名与类名(A)。
A.完全相同B.基本相同C.不相同D.无关系
136.对于一个类的析构函数,其函数名与类名(C)。
A.完全相同B.完全不同C.只相差一个字符D.无关系
137.类的构造函数是在定义该类的一个(C)时被自动调用执行的。
A.成员函数B.数据成员C.对象D.友元函数
138.类的析构函数是一个对象被(B)时自动调用的。
A.建立B.撤消C.赋值D.引用
139.一个类的构造函数通常被定义为该类的(A)成员。
A.公用B.保护C.私有D.友元
140.一个类的析构函数通常被定义为该类的(C)成员。
A.私有B.保护C.公用D.友元
141.假定AB为一个类,则执行“ABx;”语句时将自动调用该类的(B)。
A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数
142.假定AB为一个类,则执行“ABx(a,5);”语句时将自动调用该类的(A)。
A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数
143.假定AB为一个类,则执行“AB*s=newAB(a,5);”语句时得到的一个动态对象为(D)。
A.sB.s->aC.s.aD.*s
144.假定AB为一个类,则执行“ABr1=r2;”语句时将自动调用该类的(D)。
A.无参构造函数B.带参构造函数C.赋值重载函数D.拷贝构造函数
145.若需要使类中的一个指针成员指向一块动态存储空间,则通常在(B)函数中完成。
A.析构B.构造C.任一成员D.友元
146.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储(A)个整数。
A.nB.n+1C.n-1D.1
147.假定一个类的构造函数为“A(intaa,intbb){a=aa;b=aa*bb;}”,则执行“Ax(4,5);”语句后,x.a和x.b的值分别为(C)。
A.4和5B.5和4C.4和20D.20和5
148.假定一个类的构造函数为“A(intaa=1,intbb=0){a=aa;b=bb;}”,则执行“Ax(4);”语句后,x.a和x.b的值分别为(D)。
A.1和0B.1和4C.4和1D.4和0
149.假定AB为一个类,则(B)为该类的拷贝构造函数的原型说明。
A.AB(ABx);B.AB(AB&x);C.voidAB(AB&x);D.AB(intx);
150.假定一个类的构造函数为“B(intax,intbx):
a(ax),b(bx){}”,执行“Bx(1,2),y(3,4);x=y;”语句序列后x.a的值为(C)。
A.1B.2C.3D.4
151.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为(D)。
A.AB(){a=0;}B.AB(intaa=0):
a(aa){}
C.AB(intaa):
a(aa){}D.AB(){}
152.假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为(C)。
A.AB(){}B.AB():
a(0){}
C.AB(intaa=0){a=aa;}D.AB(intaa){}
153.对于任一个类,用户所能定义的构造函数的个数至多为(D)。
A.0B.1C.2D.任意个
154.对于任一个类,用户所能定义的析构函数的个数至多为(B)。
A.0B.1C.2D.任意个
155.假定AB为一个类,则执行“AB*px=newAB[n];”语句时将(A)。
A.动态分配一个数组B.动态分配一个对象
C.静态分配一个数组D.静态分配一个对象
156.设px是指向一个类对象的指针变量,则执行“deletepx;”语句时,将自动调用该类的(C)。
A.无参构造函数B.带参构造函数C.析构函数D.拷贝构造函数
157.当一个类对象离开它的作用域时,系统自动调用该类的(D)。
A.无参构造函数B.带参构造函数C.拷贝构造函数D.析构函数
158.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为(C)。
A.0B.1C.nD.n-1
159.假定AB为一个类,则执行“ABa[10];”语句时调用该类无参构造函数的次数为(D)。
A.0B.1C.9D.10
160.假定AB为一个类,则执行“AB*px=newAB[n];”语句时调用该类无参构造函数的次数为(A)。
A.nB.n