全国高等教育自学考试面向对象程序设计试题Word格式.docx
《全国高等教育自学考试面向对象程序设计试题Word格式.docx》由会员分享,可在线阅读,更多相关《全国高等教育自学考试面向对象程序设计试题Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
A.5.0+2.0和5.0+2
B.5.0+2.0和5+2.0
C.5.0+2.0和5+2
D.5+2.0和5.0+2
4.类的指针成员的初始化是通过函数完成的,这个函数通常是(
A.析构函数
B.构造函数
C.其它成员函数
D.友元函数
5.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为(
A.constchar*p=“ABCD”;
B.charconst*p=“ABCD”;
C.char*constp=“ABCD”;
D.constchar*constp=“ABCD”;
6.静态成员函数没有(
A.返回值
B.this指针
C.指针参数
D.返回类型
7.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中(
A.都是虚函数
B.只有被重新说明时才是虚函数
C.只有被重新说明为virtual时才是虚函数
D.都不是虚函数
8.下面叙述不正确的是(
A.派生类一般都用公有派生
B.对基类成员的访问必须是无二义性的
C.赋值兼容规则也适用于多重继承的组合
D.基类的公有成员在派生类中仍然是公有的
9.在C++中实现封装是借助于(
A.枚举
B.类
C.数组
D.函数
10.所有在函数中定义的变量,都是(
A.全局变量
B.局部变量
C.静态变量
D.寄存器变量
二、填空题(本大题共10小题,每小题2分,共20分)
不写解答过程,将正确的答案写在每小题的空格内。
错填或不填均无分。
11.设函数max是由函数模板实现的,并且max(3.5,5)和max(10,5)都是正确的函数调用,则该模板具有______个类型参数。
12.在单继承和多继承方式中,面向对象的程序设计应尽量使用______继承。
13.语句序列ifstreamdatafile;
datafile.open(“data.dat”);
的功能可用一个语句实现,这个语句是______。
14.将关键字const写在函数头之后,函数体之前,说明该函数是一个const成员函数。
此时const不是指定函数的返回值,而是修饰______指针。
15.一个抽象类的派生类可以实例化的必要条件是实现了所有的______。
16.在C++中,虚函数帮助实现了类的______性。
17.通过C++语言中类的______,可以扩充和完善已有类以适应新的需求。
18.为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义______。
19.在联合中,所有数据成员具有______的地址,任一时刻只有______个数据成员有效。
20.在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句______。
三、改错题(本大题共5小题,每小题2分,共10分)
21.下面的类定义有一处错误,请用下横线标出错误所在行并改正错误。
classA{
inta;
public;
A(intaa):
a=aa{}
};
22.下面的程序先把字符串“Lookout!
”输出到一个文件中,然后再从该文件输入,并显示在屏幕上,显示效果为Lookout!
。
程序中有一处错误,请用下横线标出错误所在行,并给出更改意见。
#include
voidmain(){
ofstreamoutf(“D:
\tem.dat”,ios:
:
trunc);
outf<
<
“Lookout!
”;
outf.close();
ifsteaminf(“D:
\tem.dat”);
chark[20];
inf>
>
k;
count<
K;
inf.close();
}
23.下面的程序有一处错误,请用下横线标出错误所在行并改正错误。
classTest{
staticintx;
intx=20;
//对类成员初始化
voidmain()
{
cout<
Test:
x;
24.下面的程序类B的定义中有一处错误,请用下横线标出错误所在行并说明错误原因。
public:
A(constchar*nm){strcpy(name,nm);
}
private:
charname[80];
classB:
publicA{
B(constchar*nm):
A(nm){}
voidPrintName()const;
voidB:
PrintName()const{
“name:
”<
NAME<
ENDL;
voidmain(){
Bb1(“wangli”);
b1.PrintName();
25.用下横线标出下面程序main函数中的错误所在行,并说明错误原因。
classLocation{
intX,Y;
voidinit(intinitX,intinitY);
intsumXY();
voidLocation:
init(intinitX,intinitY)
X=initX;
Y=initY;
intLocation:
sumXY()
returnX+Y;
voidmain()
LocationA1;
intx,y;
A1.init(5,3);
x=A1.X;
y=A1.Y;
X+Y<
”
)<
endl;
四、完成程序题(本大题共5小题,每小题4分,共20分)。
根据题目要求,完成程序填空。
26.在下面程序横线处填上适当内容,以使该程序执行结果为:
12
88
template
classTany{
①
;
voidpr(){
if(sizeof(int)==②
(x>
y?
x:
y)<
else
y:
x)<
Tanydobj={12.0,88.0};
dobj.pr();
Tanyiobj={12,88};
iobj.pr();
27.在下面的横线处填上适当内容,使程序完整。
classloc{
floatx,y;
loc(①
x=x1;
y=y1;
floatgetx(){returnx;
floatgety(){returny;
②
floatdis(loc&
loc&
);
floatloc:
dis(loc&
a,loc&
b)
flostdx=a.x-b.x;
flostdy=a.y-b.y;
returnsqrt(dx*dx+dy*dy);
locpl(3.5,4.5),p2(5.5,6.5);
floatd=loc:
dis(p1,p2);
“Thedistanceis”<
D;
28.在下面程序中的横线处填上适当内容,使程序完整。
classvehicle
protected:
intsize;
intspeed;
voidsetSpeed(ints){speed=s;
getSpeedLevel(){returnspeed/10;
classcar:
publicvehicle
intgetSpeedLeve(){returnspeed/5;
classtruck: