《面向对象C++程序设计》综合练习题.docx
《《面向对象C++程序设计》综合练习题.docx》由会员分享,可在线阅读,更多相关《《面向对象C++程序设计》综合练习题.docx(51页珍藏版)》请在冰豆网上搜索。
![《面向对象C++程序设计》综合练习题.docx](https://file1.bdocx.com/fileroot1/2023-5/15/87418b8e-9c4d-416f-af30-0c97e26d3558/87418b8e-9c4d-416f-af30-0c97e26d35581.gif)
《面向对象C++程序设计》综合练习题
《面向对象C++程序设计》综合练习题
一、单项选择题
1.C++源程序文件的缺省扩展名为(A)。
A.cppB.exeC.objD.lik
2.能作为C++程序的基本单位是(C)。
A.字符B.语句C.函数D.源程序文件
3.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.cppB.exeC.objD.lik
4.程序中主函数的名字为(A)。
A.mainB.MAINC.MainD.任意标识符
5.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用(D)符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车
6.x>0&&x<=10的相反表达式为(A)。
A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10
7.设”inta=12;”,则执行完语句”a+=a*a;”后,a的值是(C)。
A.12B.144C.156D.288
8.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
A.cppB.exeC.objD.lik
9.假定下列x和y均为int型变量,则不正确的赋值为(B)。
A.x+=y++B.x++=y++C.x=++yD.++x=++y
10.在下面循环语句中循环体执行的次数为(C)。
inti=0,s=0;while(s<20){i++;s+=i;}
A.4B.5C.6D.7
11.下列的符号常量定义中,错误的定义是(C)。
A.constM=10;B.constintM=20;
C.constcharch;D.constboolmark=true;
12.x>0||y==5的相反表达式为(B)。
A.x<=0||y!
=5B.x<=0&&y!
=5
C.x>0||y!
=5D.x>0&&y==5
13.do语句能够改写为(D)语句。
A.复合B.ifC.switchD.while
14.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。
A.0B.4C.8D.6
15.在下面的一维数组定义中,哪一个有语法错误。
(C)
A.inta[]={1,2,3};B.inta[10]={0};C.inta[];D.inta[5];
16.可用作C++语言用户标识符的一组标识符是(B)。
A.voiddefine+WORD B.a3_b3_123YN
C.for-abcCase D.2aDOsizeof
17.以下关于函数模板叙述正确的是(C)。
A.函数模板也是一个具体类型的函数B.函数模板的类型参数与函数的参数是同一个概念
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数
D.用函数模板定义的函数没有类型
18.以下函数的返回结果是(A)。
intfunction(char*x){
char*p=x;while(*p++);return(p-x-1);
}
A.求字符串的长度B.将字符串x连接到字符串p后面
C.将字符串x复制到字符串p中D.将字符串x反向存放
19.下列(B)的调用方式是引用调用。
A.形参和实参都是变量B.形参是指针,实参是地址值
C.形参是引用,实参是变量D.形参是变量,实参是地址值
20.函数调用不可以(D)。
A.出现在一个表达式中B.出现在执行语句中
C.作为一个函数的实参D.作为一个函数的形参
21.采用重载函数的目的是(D)。
A.实现共享B.减少空间C.提高速度D.使用方便,提高可读性
22.以下正确的描述是(B)。
A.函数的定义可以嵌套,函数的调用不可以嵌套
B.函数的定义不可以嵌套,函数的调用可以嵌套
C.函数的定义和函数的调用均可以嵌套D.函数的定义和函数的调用均不可以嵌套
23.存储以下数据,占用存储字节最多的是(D)。
A.0B.‘0’C.“0”D.0.0
24.C++语言的编译系统对宏命令的处理是(D)。
A.在程序运行时进行B.在程序连接时进行
C.和C++程序的其它语句同时进行编译D.在对源程序中其它成分正式编译之前进行
25.关于局部变量,下面说确的是(C)。
A.定义该变量的程序文件中的函数都可以访问
B.定义该变量的函数中的定义处以下的任何语句都可以访问
C.定义该变量的复合语句中的定义处以下的任何语句都可以访问
D.定义该变量的函数中的定义处以上的任何语句都可以访问
26.当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是(B)。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录
C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录
27.若定义了函数double*function(),则函数function的返回值为(B)。
A.实数型B.实数的地址C.指向函数的指针D.函数的地址
28.下列给字符数组赋初值时,正确的是(A)。
A.chars1[]=”abcdef”;B.chars2[4]=”abcd”;
C.chars3[2][3]={“abc”,”xyz”};D.chars4[4][]={‘a’,’x’,’s’,’t’};
29.关于void指针,下列说确的是(C)。
A.void指针就是未指向任何数据的指针B.void指针就是已定义而未初始化的指针
C.指向任何类型数据的指针可直接赋值给一个void指针
D.void指针值可直接赋给一个非void指针
30.设有定义“staticintdata[5][6];”,设该数组在静态存储区中的起始地址为十进制的100,
若每个int型数占4个字节,则数组元素data[2][3]的地址为(D)。
A.115B.124C.130D.160
31.设x是一个bool型的逻辑量,y的值为10,则表达式x&&y的值为(C)。
A.1B.0C.与x值相同D.与x值相反
32.假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用(C)。
A.cout<<*s;B.cout<
33.假定有“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;
34.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。
A.int*p=newint[30];B.int*p=newint(30);
C.int*p=new[30];D.*p=newint[30];
35.函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为(B)个。
A.1B.2C.4D.5
36.假定指针变量p定义为“int*p=newint(100);”,要释放p所指向的动态存,应使用语句(A)。
A.deletep;B.delete*p;C.delete&p;D.delete[]p;
37.面向对象方法的多态性是指(C)。
A.一个类可以派生出多个特殊类B.一个对象在不同的运行环境中可以有不同的变体
C.针对一消息,不同的对象可以以适合自身的方式加以响应
D.一个对象可以是由多个其他对象组合而成的
38.假定指针变量p定义为“int*p=newint[30];”,要释放p所指向的动态存,应使用语句(D)。
A.deletep;B.delete*p;C.delete&p;D.delete[]p;
39.字符串”a+b=12\n”的长度为(B)。
A.6B.7C.8D.9
40.面向对象软件开发中使用的OOA表示(A)。
A.面向对象分析B.面向对象设计C.面向对象语言D.面向对象方法
41.在关键字public后面定义的成员为类的(B)成员。
A.私有B.公用C.保护D.任何
42.面向对象软件开发中使用的OOD表示(B)。
A.面向对象分析B.面向对象设计C.面向对象语言D.面向对象方法
43.将两个字符串连接起来组成一个字符串时,选用(C)函数。
A.strlen()B.strcap()C.strcat()D.strcmp()
44.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
A.x.aB.x.a()C.x->GetValue()D.x.GetValue()
45.在多文件结构的程序中,通常把类中所有非联函数的定义单独存放于(B)中。
A.主文件B.实现文件C.库文件D.头文件
46.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。
A.intAA:
:
a()B.intAA:
a()C.AA:
:
a()D.AA:
:
inta()
47.循环语句“for(inti=0;iA.1B.n-1C.nD.n+1
48.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为(D)。
A.intB.charC.AAD.AA*
49.结构中定义的成员默认为(A)访问属性。
A.publicB.privateC.protectedD.friend
50.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为(C)。
A.abcB.*thisC.thisD.this&
51.文件包含命令中被包含的文件的扩展名(C)。
A.必须是.hB.不能是.hC.可以是.h或.cppD.必须是.cpp
52.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队非空,则进行插入时必须把新结点的地址赋给(D)。
A.elemHeadB.elemTailC.elemHead->next和elemHead
D.elemTail->next和elemTail
53.对于一个类的析构函数,其函数名与类名(C)。
A.完全相同B.完全不同C.只相差一个字符D.无关系
54.假定一条定义语句为“inta[10],x,*pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为(D)。
A.x=pa[3];B.x=*(a+3)C.x=a[3];D.x=*pa+3;
55.循环体至少被执行一次的语句为(C)。
A.for循环B.while循环C.do循环D.任一种循环
56.假定AB为一个类,则执行“ABx;”语句时将自动调用该类的(B)。
A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数
57.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储(A)个整数。
A.nB.n+1C.n-1D.1
58.假定AB为一个类,则执行“ABx(a,5);”语句时将自动调用该类的(A)。
A.带参构造函数B.无参构造函数
C.拷贝构造函数D.赋值重载函数
59.在下面的字符数组定义中,哪一个有语法错误。
(D)。
A.chara[20]=”abcdefg”;B.chara[]=”x+y=55.”;
C.chara[15];D.chara[10]=’5’;
60.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为(D)。
A.AB(){a=0;}B.AB(intaa=0):
a(aa){}
C.AB(intaa):
a(aa){}D.AB(){}
61.设px是指向一个类对象的指针变量,则执行“deletepx;”语句时,将自动调用该类的(C)。
A.无参构造函数B.带参构造函数C.析构函数D.拷贝构造函数
62.假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为(C)。
A.AB(){}B.AB():
a(0){}
C.AB(intaa=0){a=aa;}D.AB(intaa){}
63.假定有“structBOOK{chartitle[40];floatprice;}book;”,则正确的语句为(B)。
A.BOOK&x=&book;B.BOOK&x=book;
C.BOOK&x=newBOOK;D.BOOK&x=BOOK;
64.假定AB为一个类,则执行“ABa,b(3),*p;”语句时共调用该类构造函数的次数为(A)。
A.2B.3C.4D.5
65.对类对象成员的初始化是通过构造函数中给出的(B)实现的。
A.函数体B.初始化表C.参数表D.初始化表或函数体
66.假定AB为一个类,则执行“ABa
(2),b[3],*p[4];”语句时共调用该类构造函数的次数为(B)。
A.3B.4C.5D.9
67.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为(C)。
A.2B.4C.6D.8
68.一个类的静态数据成员所表示属性(C)。
A.是类的或对象的属性B.只是对象的属性
C.只是类的属性D.类和友元的属性
69.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的(D)。
A.只能是公有成员B.只能是保护成员
C.只能是除私有成员之外的任何成员D.具有任何权限的成员
70.类的静态成员的访问控制(D)。
A.只允许被定义为privateB.只允许被定义为private或protected
C.只允许被定义为publicD.可允许被定义为private、protected或public
71.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的(A)。
A.可维护性B.可复用性C.兼容性D.正确性
72.在成员函数中进行双目运算符重载时,其参数表中应带有(B)个参数。
A.0B.1C.2D.3
73.如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为(D)。
A.a.operator++
(1)B.operator++(a)
C.operator++(a,1)D.a.operator++()
74.双目运算符重载为普通函数时,其参数表中应带有(C)个参数。
A.0B.1C.2D.3
75.以下叙述中不正确的是(C)。
A.在一个函数中,可以有多条return语句B.函数的定义不能嵌套,但函数的调用可以嵌套
C.函数必须有返回值D.不同的函数中可以使用相同名字的变量
76.对于公有继承,基类中的私有成员在派生类中将(C)。
A.能够直接使用成员名访问B.能够通过成员运算符访问
C.仍然是基类的私有成员D.变为派生类的私有成员
77.从一个基类派生出的各个类的对象之间(C)。
A.共享所有数据成员,每个对象还包含基类的所有属性
B.共享部分数据成员,每个对象还包含基类的所有属性
C.不共享任何数据成员,但每个对象还包含基类的所有属性
D.共享部分数据成员和函数成员
78.当保护继承时,基类的(B)在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。
A.任何成员B.公有成员和保护成员C.保护成员和私有成员D.私有成员
79.在关键字private后面定义的成员为类的(A)成员。
A.私有B.公用C.保护D.任何
80.函数原型语句正确的是(B)。
A.intFunction(voida);B.voidFunction(int);
C.intFunction(a);D.voidint(doublea);
81.在多文件结构的程序中,通常把含有main()函数的文件称为(A)。
A.主文件B.实现文件C.程序文件D.头文件
82.设有如下函数定义
intf(char*s){
char*p=s;
while(*p!
=’\0’)p++;
return(p-s);
}
在主函数中用cout<A.3B.4C.5D.6
83.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为(C)。
A.nB.n+1C.n-1D.n-2
84.若用数组名作为函数调用的实参,传递给形参的是(A)。
A.数组的首地址B.数组中第一个元素的值
C.数组全部元素的值D.数组元素的个数
85.类的构造函数是在定义该类的一个(C)时被自动调用执行的。
A.成员函数B.数据成员C.对象D.友元函数
86.预处理命令在程序中都是以(B)符号开头的。
A.*B.#C.&D.
87.假定一个类的构造函数为“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
88.假定有定义“intb[10];int*pb;”,则不正确的赋值语句为(D)。
A.pb=b;B.pb=&b[0];C.*pb=newint;D.pb=b[5];
89.当一个类对象离开它的作用域时,系统自动调用该类的(D)。
A.无参构造函数B.带参构造函数C.拷贝构造函数D.析构函数
90.假定变量b和pb定义为“intb[10],*pb=b;”,要将24赋值给b[1]元素中,不正确的语句是(C)。
A.*(pb+1)=24;B.*(b+1)=24;C.*++b=24;D.*++pb=24;
91.对类中常量成员的初始化是通过构造函数中给出的(C)实现的。
A.函数体B.参数表C.初始化表D.初始化表或函数体
92.假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为(A)。
A.aB.AA:
:
aC.a()D.AA:
:
a()
93.引入友元的主要目的是为了(C)。
A.增强数据安全性B.提高程序的可靠性
C.提高程序的效率和灵活性D.保证类的封装性
94.类中定义的成员默认为(B)访问属性。
A.publicB.privateC.protectedD.friend
95.关于运算符重载,下列说确的是(C)。
A.重载时,运算符的优先级可以改变。
B.重载时,运算符的结合性可以改变。
C.重载时,运算符的功能可以改变。
D.重载时,运算符的操作数个数可以改变。
96.如果是类B在类A的基础上构造,那么,就称(B)。
A.类A为基类或父类,类B为超类或子类B.类A为基类、父类或超类,类B为派生类或子类
C.类A为派生类,类B为基类D.类A为派生类或子类,类B为基类、父类或超类
97.一个类的构造函数通常被定义为该类的(A)成员。
A.公用B.保护C.私有D.友元
98.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为(C)。
A.0B.1C.nD.n-1
二、填空题
1.C++语言是在____C_____语言的基础上发展起来的。
2.假定x=10,则表达式x<=10?
20:
30的值为___20___。
3.一条表达式语句必须以__;____作为结束符。
4.一个完整程序中必须有一个名为___main_____的函数。
5.行尾使用注释的开始标记符为_____//_____。
6.程序中的预处理命令是指以___#___字符开头的命令。
7.当在程序中执行到__continue______语句时,将结束所在循环语句中循环体的一次执行。
8.当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到_下一行_______的开始位置。
9.C++头文件和源程序文件的扩展名分别为_