最新C++复习题及答案资料Word文档下载推荐.docx
- 文档编号:18871774
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:18
- 大小:23.42KB
最新C++复习题及答案资料Word文档下载推荐.docx
《最新C++复习题及答案资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《最新C++复习题及答案资料Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
9、设int*p,i;
以下正确的语句是(C)
A*p=&
10Bi=p
Ci=*pDp=2*p+1
10、静态数据成员的初始化必须在(B)。
A类内B类外
C在构造函数内D静态成员函数内
11、当一个函数无返回值时,定义它的函数类型应是(A)。
AvoidBint
C任意D无
12、在下列关键字中,用于说明类中公有成员的是(A)。
ApublicBprivate
CprotectedDfriend
13、C++程序的执行总是从哪里开始的(B)。
A第一行Bmain()函数
C头文件D注释
14、(D)不是构造函数的特征。
A构造函数的函数名与类名相同
B构造函数可以重载
C构造函数可以设置缺省参数
D构造函数必须指定类型说明
15、面向对象方法的多态性是指(C)。
A一个类可以派生出多个特殊类
B一个对象在不同的运行环境中可以有不同的变体
C针对同一消息,不同的对象可以以适合自身的方式加以响应
D一个对象可以是由多个其他对象组合而成的
16、按照标识符定义的要求,(C)符号不能组成标识符。
A大小写字母B下划线
C连接符D数字字符
17、若类X是类Y的友元类,则下列哪种访问关系是正确的(B)。
A类X的成员不能访问类Y的私有成员
B类X的成员可以访问类Y的私有成员
C类Y的成员可以访问类X的私有成员
D只有类Y的公共成员才能访问类X的私有成员
18、如果编程者没有显式定义构造函数(包括复制构造函数),C++编译器就(D)。
A出现编译错误B没有构造函数
C必须显示定义D隐式定义缺省的构造函数
19、关于成员函数特征的下述描述中,哪个是错误的(A)。
A成员函数一定是内联函数
B成员函数可以重载
C成员函数可以设置参数的缺省值
D成员函数可以是静态的
20、静态成员函数仅能访问(A)。
A静态的数据成员B非静态的数据成员
C非静态的成员函数D以上都不对
21、以下不正确的C++标识符是(D)。
AABCBabc
Ca_bcDab.c
22、抽象类是(A)。
A不可以定义对象
B可以定义对象
C不可以派生新类
D不可以输出
23、在c++中,一个虚函数是通过下列哪个关键字放在其基类说明的前面来加以说明的(A)。
AvirtualBprotected
CoperatorDthis
24、在定义inta[5][4];
之后,对a的引用正确的是(C)。
Aa[2][4]Ba[5][0]
Ca[0][0]Da[0,0]
25、在一个类的定义中,包含对什么成员的定义(C)。
A数据B函数
C数据和函数D数据或函数
26、在计算机上可以直接运行的程序是(D)。
AC++源程序B高级语言程序
C汇编语言程序D机器语言程序
27、下面描述中,表达错误的是(B)。
A.公有继承时基类中的public成员在派生类中仍是public的
B.公有继承时基类中的private成员在派生类中仍是private的
C.公有继承时基类中的protected成员在派生类中仍是protected的
D.私有继承时基类中的public成员在派生类中是private的
28、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(A)。
29、下列对派生类的描述中,错误的是(D)。
A.一个派生类可以作另一个派生类的基类
B.派生类至少有一个基类
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
30、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(D)。
A基类、自己所属类、对象成员所属类
B自己所属类、对象成员所属类、基类
C对象成员所属类、基类、自己所属类
D基类、对象成员所属类、自己所属类
二、填空题
1、在C++中,有一种不能定义对象的类,这样的类只能被继承,称之为抽象类,定义该类至少具有一个纯虚函数。
2、在C++中,用数组、指针和引用作为函数参数,能够将参数值带回。
3、如果类A继承了类B,则类A称为派生类(或子类),类B称为基类(或父类)。
4、面向对象程序设计有四大特征,它们是抽象、封装、继承、多态。
5、C++中可以有许多相同名称,但参数类型或个数不同的成员函数,称为函数重载。
6、请写出与数学表达式5/9(F-32)相对应的C++表达式5.0/9.0*(F-32)。
7、构造函数是对象被创建时自动执行。
一个类有可以多个构造函数,可以有一个析构函数。
8、动态关联需要满足的两个条件,它们是所调用的函数是虚函数,用指针或引用调用该虚函数。
9、类的成员的访问权限有public、protected和private三种。
10、x*=y+8等价于x=x*(y+8)。
11、类的静态成员分为静态数据成员和静态成员函数。
12、友元可以是友元函数,也可以是友元类。
13、声明类的静态成员用关键字static,声明类的友元函数用关键字friend。
14、在C++中,一个派生类可以从一个基类派生称为单继承;
也可以从多个基类派生,称为多重继承。
无论按哪种方式继承,基类的private(私有)成员在派生类中始终是不可访问的。
15、在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型不同;
在基类和派生类中,成员函数的覆盖是指派生类中的函数覆盖了基类中的同名函数。
16、类作用域运算符“:
:
”的作用用来指明哪个函数属于哪个类或哪个数据属于哪个类。
17、面向对象方法的多态性是指针对同一消息,不同的对象可以以适合自身的方式加以响应。
多态的实现分为两类编译时多态和运行时多态(或静态多态;
动态多态)。
18、类的静态数据成员是类的所有对象共享的成员。
19、若需要把一个函数“voidfun()”定义为一个类A的友元函数,则应在类A的定义中加入一条语句:
friendvoidfun()。
20、请写出与数学表达式4/3πR3相对应的C++表达式4.0/3*3.14*R*R*R。
21、在C++中,函数参数的两种传递方式分别是值传递和地址传递。
22、一个类和对象的关系,正如基本数据类型与该类型的变量一样,如intx;
。
23、在一个类中定义常数据成员用关键字const,定义静态数据成员用关键字static。
24、在C++中,为对象申请空间时用new,而撤消对象时释放内存空间则用delete。
25、在私有继承关系下,基类的公有成员和保护成员将成为派生类中的私有成员,它们只能由派生类的成员函数来访问;
基类的私有成员对于派生类而言是不可访问。
三、判断题
1.类中所提供的成员函数可以直接访问私有成员。
T
2.字符串是用单引号括起来的若干字符。
F
3.构造函数和析构函数都不能重载。
4.静态成员变量每个对象都有一份拷贝。
5.子类可以改造从父类继承的成员。
T
6.说明或定义对象时,类名前不需加class关键字。
7.运算符重载就是赋予尚未有的运算符多种运算的功能。
8.使用关键字class定义的类中缺省的访问权限是公有的。
9.显式类型转换可以把一个变量转换成另外一种数据类型。
10.友元函数的声明不受访问区域的影响。
11、构造函数和析构函数都可以重载。
12、C++的源程序可以直接在计算机上运行。
13、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
14、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。
15、字符串是用双引号括起来的一个或多个字符。
16、子类可以继承父类的所有成员。
17、抽象类不可以继承,只能派生。
18、使用new申请的内存,在程序执行结束时,必须使用delete释放。
19、在不同的继承方式下,对于基类的私有成员,都必须通过基类的成员函数来访问。
20、多态的实现分为两类:
编译时的多态和运行时的多态。
21、发生函数调用时,只能把实参的值传递给形参。
22、类A是类B的友元,则类B一定是类A的友元。
23、a*b是合法的C++标识符。
24、可以在类的构造函数中对静态数据成员进行初始化。
F
25、protected和private区别在于:
protected成员可以被派生类访问,而private成员则不能被派生类访问。
26、构造函数和析构函数都可以重载。
27、使用关键字class定义的类中缺省访问权限是私有(private)的。
28、成员运算符描述的是对象和成员之间的关系。
29、要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用函数重载。
30、如果有以下定义,inta=10,*ptr=&
a;
则变量ptr的值为10。
四、阅读程序写结果
1、
#include<
iostream>
usingnamespacestd;
inlinefloatfmax(floatx,floaty)
{
returnx>
y?
x:
y;
}
intmain()
floata=12.3,b=20.5;
cout<
<
"
fmax(a,b)="
fmax(a,b)<
endl;
return0;
2、
intmain()
This"
is"
;
a"
C++"
program."
return0;
3、
classA
private:
intx;
inty;
public:
A(inta,intb)
{
x=a;
y=b;
}
voidprint(){cout<
x="
x<
y="
y<
};
Aa(-5,-10);
a.print();
4、
intsum(intx,inty);
intsum(intx,inty,intz);
doublesum(doublex,doubley);
doublesum(doublex,doubley,doublez);
sum(12,52)<
sum(21,5,37)<
sum(11.2,5.0,17.5)<
intsum(intx,inty)
{returnx+y;
intsum(intx,inty,intz)
{returnx+y+z;
doublesum(doublex,doubley)
doublesum(doublex,doubley,doublez)
5、
classBox
{public:
Box(int,int,int);
intvolume();
private:
intheight;
intwidth;
intlength;
};
Box:
Box(inth,intw,intlen)
{height=h;
width=w;
length=len;
intBox:
volume()
{return(height*width*length);
}
Boxbox1(12,25,30);
Thevolumeofbox1is"
box1.volume()<
Boxbox2(15,30,21);
Thevolumeofbox2is"
box2.volume()<
6、
usintnamespacestd;
classPoint
Point(inta,intb){x=a;
y=b;
intgetx(){returnx;
intgety(){returny;
classCircle:
publicPoint
intr;
Circle(inta,intb,intc):
Point(a,b){r=c;
intgetr(){returnr;
floatarea(){return3.14159*r*r;
Circlec(15,20,10);
圆心为:
("
c.getx()<
"
c.gety()<
)"
半径为:
c.getr()<
面积为:
c.area()<
7、
classA
{public:
A(){cout<
ConstructorA"
~A(){cout<
DestructorA"
<
classB:
publicA
B(){cout<
ConstructorB"
~B(){cout<
DestructorB"
{Bb;
五、编写程序
1、设计一个程序,用内联函数实现求出三个整数中的最小值,并输出。
2、定义一个求两个整数中较大值的函数max(),要求定义成内联函数,然后在main()函数中进行调用。
3、类Person的定义如下,请实现该类,并创建对象obj,然后使用构造函数为obj赋予初始值(内容自定)。
classPerson
stringname;
intage;
intsalary;
stringtel;
Person(stringxname,intxage,intxsalary,stringxtel);
voiddisp();
4、实现一个类A,在A中有两个私有整型变量a和b,定义构造函数对a和b进行初始化,并实现成员函数geta()取得a的值和getb()取b的值。
实现类B从A继承,覆盖geta(),使其返回a的2倍。
5、建立一个名为Teacher的类,该类有以下几个私有成员变量:
教师姓名、工资号、性别、年龄。
还有以下两个成员变量:
一个用于初始化教师姓名、工资号、性别和年龄的构造函数,一个用于输出教师信息的函数。
编写一个主函数,声明一个教师对象,然后调用成员函数在屏幕输出教师信息。
阅读程序写结果
fmax(a,b)=20.5
ThisisaC++program.
x=-5;
y=-10
64
63
33.7
Thevolumeofbox1is9000
Thevolumeofbox2is9450
(15,20)
半径为:
10
面积为:
314.159
ConstructorA
ConstructorB
DestructorB
DestructorA
编写程序
inlineintmin(inta,intb,intc)
if(a>
b)a=b;
c)a=c;
returna;
inta,b,c,m;
Pleaseinputa,b,c:
cin>
>
a>
b>
c;
m=min(a,b,c);
Theminimumintegeris:
m<
inlineintmax(floatx,floaty)
return(x>
y);
floatm=10.5,n=20.7,t;
t=max(m,n);
较大值="
t<
Person:
Person(stringxname,intxage,intxsalary,stringxtel)
Name=xname;
age=xage;
salary=xsalary;
tel=xtel;
voidPerson:
disp()
姓名:
name<
年龄:
age<
工资:
salary<
电话:
tel<
endl<
voidmain()
Personobj("
张三"
25,850,"
45678912"
);
obj.disp();
inta;
intb;
public:
A(intm,intn):
a(m),b(n){}
intgeta(){returna;
intgetb(){returnb;
}
};
classB:
publicA
{
B(intm,intn):
A(m,n){}
intgeta(){returnA:
geta()*2;
voidmain()
Bb(2,2);
b.geta();
}
classTeacher
intnumber;
charsex;
Teacher(stringp,intn,chars,inta)
name=p;
number=n;
sex=s;
age=a;
voidprint()
cout<
姓名="
学号="
number;
if(sex=='
f'
||sex=='
F'
)
2、你大部分的零用钱用于何处?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 C+ 复习题 答案 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)