C++复习题 2.docx
- 文档编号:30266520
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:29
- 大小:31.56KB
C++复习题 2.docx
《C++复习题 2.docx》由会员分享,可在线阅读,更多相关《C++复习题 2.docx(29页珍藏版)》请在冰豆网上搜索。
C++复习题2
一、选择题
1.下面对于类的描述,()是错误的。
A.类是抽象数据类型的实现B.类是具有共同行为的若干对象的统一描述体
C.类是创建对象的模板D.类就是C语言中的结构类型
2.面向对象的()是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。
不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。
A.多态性B.封装性C.继承性D.重用性
3.C++源文件的扩展名为()。
A.cppB.cC.txtD.exe
4.C++的合法注释是()。
A./*ThisisaCprogram/* B.//ThisisaCprogram
C.“ThisisaCprogram”D.//ThisisaCprogram//
5.在C++语言中,()的陈述是正确的。
A.能使用关键字并区分大小写B.能使用关键字并不区分大小写
C.不能使用关键字并区分大小写D.不能使用关键字并不区分大小写
6.关于C++和C语言的描述中,()是错误的?
A.C是C++的一个子集B.C程序在C++环境可以运行
C.C++程序在C环境可以运行D.C++是面向对象的而C是面向过程的
7.运算符+、=、*、>=中,优先级最高的运算符是()。
A.+B.=C.*D.>=
8.运算符+、<=、=、%中,优先级最低的运算符是()。
A.+B.<=C.=D.%
9.下列不合法的变量名为()。
A.intB.int1C.name_1D.name0
10.已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?
++d:
a
A.9B.6C.8D.0
11.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<’B’&&!
y)的值是()。
A.0B.语法错C.1D.“假”
12.对while、do…while循环结构,下面说法正确的是()。
A.只是表达形式不同
B.do…while结构中的语句至少执行一次
C.while结构中的语句至少执行一次
D.条件成立时,它们有可能一次也不执行
13.以下不正确的是()。
A.语句for(i=0;;i++)表示无限循环B.for(;;)表示无限循环
C.for()也表示无限循环D.while
(1)表示无限循环
14.对中断语句的说法下面不正确的是()。
A.用户可以指定中断的位置B.用户可以指定转移的位置
C.break语句可以跳出本循环D.continue语句可以结束本次循环
15.在C++语言中,关于参数默认值的描述正确的是()。
A.只能在函数定义时设置参数默认值
B.设置参数默认值时,应当从右向左设置
C.设置参数默认值时,应当全部设置
D.设置参数默认值后,调用函数不能再对参数赋值
16.在函数的返回值类型与返回值表达式的类型的描述中,错误的是()。
A. 函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的
B. 函数返回值的类型就是返回值表达式的类型
C. 函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型
D. 函数返回值类型决定了返回值表达式的类型
17.以下正确的说法是()。
A.用户若需要调用标准函数,调用前必须重新定义
B.用户可以直接调用所有标准库函数
C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数
D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数
18.如果一个函数无返回值,定义时它的函数类型应是()。
A.任意B.intC.voidD.无
19.下列哪个不是重载函数在调用时选择的依据()。
A.参数类型B.参数个数C.函数类型D.函数名
20.在C++语言中,关于参数默认值的描述正确的是()。
A.只能在函数定义时设置参数默认值
B.设置参数默认值时,应当从右向左设置
C.设置参数默认值时,应当全部设置
D.设置参数默认值后,调用函数不能再对参数赋值
21.对数组名作函数的参数,下面描述正确的是(B)。
A.数组名作函数的参数,调用时将实参数组复制给形参数组
B.数组名作函数的参数,主调函数和被调函数共用一段存储单元
C.数组名作参数时,形参定义的数组长度不能省略
D.数组名作参数,不能改变主调函数中的数据
22.若有以下定义,则说法错误的是()。
inta=100,*p=&a;
A.声明变量p,其中*表示p是一个指针变量
B.变量p经初始化,获得变量a的地址
C.变量p只可以指向一个整形变量
D.变量p的值为100
23.下列关于结构体的说法错误的是()。
A.结构体是由用户自定义的一种数据类型
B.结构体中可设定若干个不同数据类型的成员
C.结构体中成员的数据类型可以是另一个已定义的结构体
D.在定义结构体时,可以为成员设置默认值
24.若有同下定义,下列说法错误的是()。
structem{
chara;
charb;
}
A.struct是结构体类型关键字B.em是结构体类型名
C.em是用户声明的结构体变量D.a,b是结构体成员名
25.若有以下定义,则赋值正确的是()。
inta,b,*p;
floatc,*q;
A.p=&cB.q=pC.q=&aD.q=newfloat
26.若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则()不是对a数组元素的正确引用(其中0≤i<10)。
A.p[i] B.*(*(a+i))C.a[p-a]D.*(&a[i])
(2)若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则()不是对a数组元素的正确引用(其中0≤i<10)。
A.p[i] B.*(*(a+i))C.a[p-a]D.*(&a[i])
答案:
B
27.如果x是整型变量,则合法的形式是()。
A.&(x+5)B.*x C.&*x D.*&x
28.列关于结构体的说法错误的是()。
A.结构体是由用户自定义的一种数据类型
B.结构体中可设定若干个不同数据类型的成员
C.结构体中成员的数据类型可以是另一个已定义的结构体
D.在定义结构体时,可以为成员设置默认值
29.在定义一个共用体变量时,系统为其分配存储空间的原则是( )。
A.按所有成员需要的存储空间总和分配。
B.按成员中占存储空间最大者分配。
C.按成员占存储空间最小者分配。
D.按第一个成员所需的存储空间分配。
30.下列有关类的说法不正确的是()。
A. 对象是类的一个实例
B. 任何一个对象只能属于一个具体的类
C. 一个类只能有一个对象
D.类与对象的关系和数据类型与变量的关系相似
31.下面()项是对构造函数和析构函数的正确定义。
A.voidX:
:
X(),voidX:
:
~X()
B.X:
:
X(参数),X:
:
~X()
C.X:
:
X(参数),X:
:
~X(参数)
D.voidX:
:
X(参数),voidX:
:
~X(参数)
32.()的功能是对象进行初始化。
A.析构函数B.数据成员C.构造函数D.静态成员函数
33.拷贝构造函数具有的下列特点中,()是错误的。
A. 如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的
B. 拷贝构造函数只有一个参数,并且是该类对象的引用
C. 拷贝构造函数是一种成员函数
D.拷贝构造函数的名字不能用类名
34.关于友元的描述中,()是错误的。
A. 友元函数是成员函数,它被说明在类体内
B. 友元函数可直接访问类中的私有成员
C. 友元函数破坏封装性,使用时尽量少用
D. 友元类中的所有成员函数都是友元函数
35.类的析构函数的作用是(D)。
A.一般成员函数B.类的初始化C.对象初始化D.删除对象
36.了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()。
A.publicB.protectedC.privateD.static
37.下列对派生类的描述中,()是错误的。
A. 一个派生类可以作为另一个派生类的基类
B. 派生类至少有一个基类
C. 派生类的成员除了它自己的成员外,还包含了它的基类成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
38.派生类的对象对它的()是可以访问的。
A.公有继承的基类的公有成员B.公有继承的基类的保护成员
C.公有继承的基类的私有成员D.保护继承的基类的公有成员
39.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A)规律性B.传递性C.重复性D.多样性
40.多继承派生类构造函数构造对象时,()被最先调用。
A.派生类自己的构造函数B.虚基类的构造函数
C.非虚基类的构造函数 D.派生类中子对象类的构造函数
41.C++类体系中,能被派生类继承的是()。
A.构造函数B.虚函数C.析构函数D.友元函数
42.C++类体系中,不能被派生类继承的有()。
A.构造函数B.虚函数C.静态成员函数D.赋值操作函数
43.设置虚函数的声明中,正确的是()。
A.简化程序B.消除二义性C.提高运行效率D.减少目标代码
44.下列运算符中,()运算符在C++中不能重载。
A.?
:
B.[]C.newD.&&
45.下列关于动态联编的描述中,错误的是()。
A.动态联编是以虚函数为基础
B.动态联编是运行时确定所调用的函数代码的
C.动态联编调用函数操作是指向对象的指针或对象引用
D.动态联编是在编译时确定操作函数的运行时
46.编译时的多态性可以通过使用()获得。
A.虚函数和指针B.重载函数和析构函数C.虚函数和对象D.虚函数和引用
47.关于纯虚函数和抽象类的描述中,错误的是()。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现
B.抽象类是指具体纯虚函数的类
C.一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
48.下列描述中,()是抽象类的特征。
A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元函数D.不能说明其对象
49.要实现动态联编,必须通过()调用虚函数。
A.对象指针B.成员名限定C.对象名D.派生类名
50.关于read()函数的下列描述中,()是对的。
A. 函数只能从键盘输入中获取字符串
B. 函数所获取的字符多少是不受限制的
C. 该函数只能用于文本文件的操作中
D. 该函数只能按规定读取所指定的字符数
二、填空题
1.如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为__1__。
2.设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为___9_。
已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+4’的值为__e__。
3.已知c的ASCII码为十进制数99,设k为字符型变量,则表达式k=‘c’+1的值为___d___。
4.“A”与‘A’的区别是:
前者表示的是____字符串__,占用__2____个内存空间,后者表示的是___字符_______,占用____1___个内存空间。
5..若有以下定义,inta[5]={1,3,5,7,9},*p=newint[5];则下列操作*p=a;是( )。
6.若有以下定义int*p=newint[10],则释放指针所指内存空间的操作是( delete[]p )。
7.数组与函数参数联系密切,当用数组元素作函数参数时,这是属于值传递;当数组名作为参数时,这是属于地址传递,对形参的改变可影响到实参。
8.函数的形参在未被调用之前不分配空间,函数的形参的类型要和实参的相同。
例题10:
利用“对象名.成员变量”形式访问的对象成员仅限于被声明为
(1)的成员;若要访问其他成员变量,需要通过
(2)函数或(3)函数。
答案:
(1)public
(2)成员函数(3)友元函数
10.类的成员分为_数据成员_____和__函数成员_____。
11.类中的数据和成员函数默认访问类型为private
12.类的成员函数可以在类内定义,也可以在类外定义
13.一个__类__和__对象_____的关系,正如基本数据类型与该类型的变量。
14.类完成了面向对象程序设计的_封装____特性。
15.类成员的默认访问方式是_private_____.
16.构造函数是___对象___被创建时自动执行,对象消失时自动执行的成员函数称为____析构函数___。
17.一个类可以有___多个构造函数,有_1____析构函数。
18.C++将类继承分为单继承和多继承两种。
19.在继承机制下,当对象消亡时,编译系统先执行派生类的析构函数,然后才执行派生类对象成员所在类的析构函数,最后执行基类的析构函数。
20.类的_静态__成员函数不能对类中的非静态成员进行默认访问。
21.类的__静态__数据成员是类所有对象共享的成员。
22.如果说明类B是类A的友元类,则类B的所有成员函数都是类A的__友元____函数。
23.友元函数__不是___类的成员函数。
(是/不是)
24.利用成员函数对二元运算符重载,其左操作数为this指针。
右操作数为成员函数参数。
25.如果类A继承了类B,则类A称为__派生类_____。
类B称为____基类___。
26.类有两种用法:
一种是类的实例化,即生成类的__对象____;另一种是通过___基类____派生出新的类。
27.运算符重载后,原运算符的优先级和结合特性___/不会__改变。
(会/不会)
28.运算函数中的关键字是__operator____,它和运算符一起组成该运算符函数的函数名。
29.__纯虚函数是一个在基类中说明的虚函数,但未给出具体的实现,要求在其派生类实现。
30.如果一个类中有一个或多个纯虚函数,则这个类称为__抽象类____。
31.文件的打开是通过使用类___fstream_______的成员函数___open_____来实现的。
32.文件的关闭是通过使用类__fstream______的成员函数____close____来实现的。
三、阅读下面的程序,并掌握程序中的关键技术,如:
字符串的表示及访问;
ifelse语句;
switchcase语句(注意比较有无break;语句的区别);
静态成员的定义及使用;
派生类构造函数的定义及创建派生类对象时构造函数的调用顺序;
公有继承时的赋值兼容规则及动态多态(注意比较有无虚函数时的区别);
运算符重载等。
1.include
voidmain(void){
charstring[]="congratulation";
char*p=string;
cout< cout<<*p<<*(p+2)<<*(p+4)<<*(p+6)< for(inti=1;i cout< 2.#include voidmain(){ inta,b; intn=0; for(a=1,b=1;a<=150;a++){ if(b>=10)break; if(b%3==1){ b+=3; n++; continue; } } cout< cout< cout< } 3.#include voidmain(){ inta; cout<<"pleaseinputanumber: "; cin>>a; switch(a%2) { case0: cout<<"a是偶数"< default:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+复习题 C+ 复习题