《【c++】复习题与答案解析.pdf》由会员分享,可在线阅读,更多相关《【c++】复习题与答案解析.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录一、单选题.1二、判断题.12 三、填空题.13 四、程序填充.18 五、读程序写出运行结果.31 六、指出以下程序或函数的功能.43 七、程序改错.45 八、程序设计.51 面向对象程序设计答案.60 一、单选题1.C+源程序文件的缺省扩展名为(A)。A.cppB.exe C.obj D.lik 2.由 C+源程序文件编译而成的目标文件的缺省扩展名为(C)。A.cpp B.exe C.objD.lik 3.由 C+目标文件连接而成的可执行文件的缺省扩展名为(B)。A.cpp B.exeC.obj D.lik 4.编写 C+程序一般需经过的几个步骤依次是(B)。A.编译、编辑、连接、调试B
2、.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接6.能作为 C+程序的基本单位是(C)。A.字符B.语句C.函数D.源程序文件8.C+程序的基本模块为(D)。A.表达式B.标识符C.语句D.函数10.存储以下数据,占用存储字节最多的是(D)。A.0 B.0C.“0”D.0.038.以下说法中正确的是(B)。A.C+程序总是从第一个定义的函数开始执行B.C+程序总是从main 函数开始执行C.C+函数必须有返回值,否则不能使用函数D.C+程序中有调用关系的所有函数必须放在同一个程序文件中40.函数重载是指(A)。A.两个或两个以上的函数取相同的函数名,但形参的个数或类
3、型不同B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C.两个以上的函数名字不同,但形参的个数或类型相同D.两个以上的函数取相同的函数名,并且函数的返回类型相同41.以下关于函数模板叙述正确的是(C)。A.函数模板也是一个具体类型的函数B.函数模板的类型参数与函数的参数是同一个概念C.通过使用不同的类型参数,函数模板可以生成不同类型的函数D.用函数模板定义的函数没有类型42.下列(C)的调用方式是引用调用。A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值43.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此
4、函数应选择(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+语言的编译系统对宏命令的处理
5、是(D)。A.在程序运行时进行B.在程序连接时进行C.和 C+程序的其它语句同时进行编译D.在对源程序中其它成分正式编译之前进行62.当#include 后面的文件名用双引号括起来时,寻找被包含文件的方式是(B)。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录63.当#include 后面的文件名用尖括号括起来时,寻找被包含文件的方式是(A)。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录
6、67.文件包含命令中被包含的文件的扩展名(C)。A.必须是.h B.不能是.h C.可以是.h 或.cpp D.必须是.cpp 70.用 new 运算符创建一个含10个元素的一维整型数组的正确语句是(C)。A.int*p=new a10;B.int*p=new float10;C.int*p=new int10;D.int*p=new int10=1,2,3,4,5 80.假定 p 指向的字符串为”string”,则 coutp+3的输出结果为(C)。A.string B.ring C.ing D.i 81.假定 p 指向的字符串为”string”,若要输出这个字符串的地址值,则使用(D)。A
7、.cout*s;B.couts;C.cout&s;D.couttitle,”Wang Tao”);B.strcpy(book.title,”Wang Tao”);C.strcpy(*book.title,”Wang Tao”);D.strcpy(*book)-title,”Wang Tao”);86.假定有“struct BOOKchar title40;float price;BOOK*book;”,则不正确的语句为(A)。A.BOOK*x=new book;B.BOOK x=C+Programming,27.0;C.BOOK*x=new BOOK;D.BOOK*x=book;87.假定有“
8、struct BOOKchar title40;float price;book;”,则正确的语句为(B)。A.BOOK&x=&book;B.BOOK&x=book;C.BOOK&x=new BOOK;D.BOOK&x=BOOK;88.下列对引用的陈述中不正确的是(C)。A.每一个引用都是其所引用对象的别名,因此必须初始化B.形式上针对引用的操作实际上作用于它所引用的对象C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行D.不需要单独为引用分配存储空间91.假定指针变量p 定义为“int*p=new int(100);”,要释放p 所指向的动态内存,应使用语句(A)。A.de
9、lete p;B.delete*p;C.delete&p;D.delete p;92.假定指针变量p 定义为“int*p=new int30;”,要释放p 所指向的动态内存,应使用语句(D)。A.delete p;B.delete*p;C.delete&p;D.delete p;93.假定变量x 定义为“int x=5;”,要使 rx 成为 x 的引用(别名),rx 应定义为(D)。A.int rx=x;B.int rx=&x;C.int*rx=&x;D.int&rx=x;94.关于消息,下列说法中不正确的是(B)。A.发送消息的对象请求服务,接受消息的对象提供服务B.消息的发送者必须了解消息
10、的接收者如何相应消息C.在 C+中,消息的发送具体体现为对接收消息的对象的某个函数的调用D.每个对象只能接收某些特定格式的消息95.关于封装,下列说法中不正确的是(D)。A.通过封装,对象的全部属性和操作结合在一起,形成一个整体B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)C.通过封装,每个对象都成为相对独立的实体D.通过封装,对象的属性都是不可见的96.面向对象方法的多态性是指(C)。A.一个类可以派生出多个特殊类B.一个对象在不同的运行环境中可以有不同的变体C.针对一消息,不同的对象可以以适合自身的方式加以响应D.一个对象可以是由多个其他对象组合而成的97.软件产品在需求发生
11、变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的(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.面
12、向对象方法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 后面定
13、义的成员为类的(B)成员。A.私有B.公用C.保护D.任何107.在关键字 private 后面定义的成员为类的(A)成员。A.私有B.公用C.保护D.任何108.假定 AA 为一个类,a为该类公有的数据成员,x 为该类的一个对象,则访问x 对象中数据成员a的格式为(D)。A.x(a)B.xa C.x-a D.x.a109.假定 AA 为一个类,a()为该类公有的函数成员,x 为该类的一个对象,则访问x 对象中函数成员a()的格式为(B)。A.x.a B.x.a()C.x-a D.x-a()110.假定 AA 为一个类,a 为该类公有的数据成员,px 为指向该类对象的一个指针,则访问 px 所
14、指对象中数据成员a的格式为(C)。A.px(a)B.pxa C.px-a D.px.a 111.假定 AA 为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回 a的值,x 为该类的一个对象,则访问x 对象中数据成员a的格式为(D)。A.x.a B.x.a()C.x-GetValue()D.x.GetValue()112.假定 AA 为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。A.int AA:a()B.int AA:a()C.AA:a()D.AA:int a()113.假定 AA 为一个类,a为该类公有的数据成员,
15、若要在该类的一个成员函数中访问它,则书写格式为(A)。A.a B.AA:a C.a()D.AA:a()114.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字(B)放在函数原型或函数头的前面。A.in B.inlineC.inLine D.InLiner 115.在多文件结构的程序中,通常把类的定义单独存放于(D)中。A.主文件B.实现文件C.库文件D.头文件116.在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于(B)中。A.主文件B.实现文件C.库文件D.头文件117.在多文件结构的程序中,通常把含有main()函数的文件称为(A)。A.主文件B.实现文件C.程序
16、文件D.头文件118.一个 C+程序文件的扩展名为(C)。A.h B.c C.cppD.cp 119.在 C+程序中使用的cin 标识符是系统类库中定义的(A)类中的一个对象。A.istreamB.ostream C.iostream D.fstream 120.在 C+程序中使用的cout 标识符是系统类库中定义的(B)类中的一个对象。A.istream B.ostreamC.iostream D.fstream 121.假定 AA 是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为(D)。A.int B.char C.AA D.AA*122.假定 AA 是一个类,ab
17、c是该类的一个成员函数,则参数表中隐含的第一个参数为(C)。A.abc B.*this C.this D.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.类中定义的成员默认为
18、(B)访问属性。A.public B.privateC.protected D.friend 126.结构中定义的成员默认为(A)访问属性。A.publicB.private C.protected D.friend 127.当类中一个字符指针成员指向具有n 个字节的存储空间时,它所能存储字符串的最大长度为(C)。A.n B.n+1 C.n-1D.n-2 128.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为 length,则队尾(即最后一个)元素的位置为(C)。A.length+1 B.first+length C.(first+length-1)%MS
19、 D.(first+length)%MS 129.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为 length,则队尾的后一个位置为(D)。A.length+1 B.first+length C.(first+length-1)%MS D.(first+length)%MS130.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为 length,则队首的后一个位置为(B)。A.first+1 B.(first+1)%MSC.(first-1)%MS D.(first+length)%MS 131.在一个用链表实现的队列类中
20、,假定每个结点包含的值域用elem 表示,包含的指针域用 next 表示,链队的队首指针用elemHead表示,队尾指针用elemTail 表示,若链队非空,则进行插入时必须把新结点的地址赋给(D)。A.elemHead B.elemTail C.elemHead-next 和 elemHead D.elemTail-next 和 elemTail132.在一个用链表实现的队列类中,假定每个结点包含的值域用elem 表示,包含的指针域用 next 表示,链队的队首指针用elemHead表示,队尾指针用elemTail 表示,若链队为空,则进行插入时必须把新结点的地址赋给(C)。A.elemHe
21、ad B.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.类的析构函
22、数是一个对象被(B)时自动调用的。A.建立B.撤消C.赋值D.引用139.一个类的构造函数通常被定义为该类的(A)成员。A.公用B.保护C.私有D.友元140.一个类的析构函数通常被定义为该类的(C)成员。A.私有B.保护C.公用D.友元141.假定 AB 为一个类,则执行“AB x;”语句时将自动调用该类的(B)。A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数142.假定 AB 为一个类,则执行“AB x(a,5);”语句时将自动调用该类的(A)。A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数143.假定 AB 为一个类,则执行“AB*s=new AB(a
23、,5);”语句时得到的一个动态对象为(D)。A.s B.s-a C.s.a D.*s144.假定 AB 为一个类,则执行“AB r1=r2;”语句时将自动调用该类的(D)。A.无参构造函数B.带参构造函数C.赋值重载函数D.拷贝构造函数145.若需要使类中的一个指针成员指向一块动态存储空间,则通常在(B)函数中完成。A.析构B.构造C.任一成员D.友元146.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储(A)个整数。A.nB.n+1 C.n-1 D.1 147.假定一个类的构造函数为“A(int aa,int bb)a=aa;b=aa*bb;”
24、,则执行“A x(4,5);”语句后,x.a和 x.b 的值分别为(C)。A.4 和 5 B.5 和 4 C.4 和 20D.20 和 5 148.假定一个类的构造函数为“A(int aa=1,int bb=0)a=aa;b=bb;”,则执行“A x(4);”语句后,x.a和 x.b 的值分别为(D)。A.1 和 0 B.1 和 4 C.4 和 1 D.4 和 0149.假定 AB 为一个类,则(B)为该类的拷贝构造函数的原型说明。A.AB(AB x);B.AB(AB&x);C.void AB(AB&x);D.AB(int x);150.假定一个类的构造函数为“B(int ax,int bx)
25、:a(ax),b(bx)”,执行“B x(1,2),y(3,4);x=y;”语句序列后x.a的值为(C)。A.1 B.2 C.3D.4 151.假定一个类AB 只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为(D)。A.AB()a=0;B.AB(int aa=0):a(aa)C.AB(int aa):a(aa)D.AB()152.假定一个类AB 只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为(C)。A.AB()B.AB():a(0)C.AB(int aa=0)a=aa;D.AB(int aa)153.对于任一个类,用户所能定义的构造函数的个数至
26、多为(D)。A.0 B.1 C.2 D.任意个154.对于任一个类,用户所能定义的析构函数的个数至多为(B)。A.0 B.1 C.2 D.任意个155.假定 AB 为一个类,则执行“AB*px=new ABn;”语句时将(A)。A.动态分配一个数组B.动态分配一个对象C.静态分配一个数组D.静态分配一个对象156.设 px 是指向一个类对象的指针变量,则执行“delete px;”语句时,将自动调用该类的(C)。A.无参构造函数B.带参构造函数C.析构函数D.拷贝构造函数157.当一个类对象离开它的作用域时,系统自动调用该类的(D)。A.无参构造函数B.带参构造函数C.拷贝构造函数D.析构函数158.假定一个类对象数组为An,当离开它定义的作用域时,系统自动调用该类析构函数的次数为(C)。A.0 B.1 C.nD.n-1 159.假定 AB 为一个类,则执行“AB a10;”语句时调用该类无参构造函数的次数为(D)。A.0 B.1 C.9 D.10