2002年10月全国高等教育自学考试面向对象程序设计试题Word文件下载.doc
《2002年10月全国高等教育自学考试面向对象程序设计试题Word文件下载.doc》由会员分享,可在线阅读,更多相关《2002年10月全国高等教育自学考试面向对象程序设计试题Word文件下载.doc(19页珍藏版)》请在冰点文库上搜索。
10.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->
A:
:
func()将()
A.调用类A中的函数func()
B.调用类B中的函数func()
C.根据p所指的对象类型而确定调用类A中或类B中的函数func()
D.既调用类A中函数,也调用类B中的函数
二、填空题(每小题2分,共20分)
11.假定用户没有给一个名为AB的类定义析构函数,则系统自动给出的缺省析构函数定义为__________。
12.模板定义中标识类型的参数必须用关键字_________修饰。
13.表达式count<
<
hex还可表示为_________。
14.通过C++语言中的_________机制,可以从现存类中构建其子类。
15.要在调用虚函数的时候强制进行静态联编,可以通过在调用中对虚函数加_________实现。
16.封装要求一个对象应具备明确的功能,并具有_________以便和其它对象相互作用。
17.在删除一个动态对象时,将自动调用该动态对象所属类的_________函数。
18.静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是_________。
19.在下面的类定义中,私有成员有_________。
classLocation{
intX,Y;
protected:
intzeroX,zerxY;
intSetZero(intzeroX,intzeroY);
private:
intlength,height;
public:
voidinit(intinitX,intinitY);
intGetX();
intGetY();
};
20.类的私有成员只能被它的成员函数和_________访问。
三、改错题(每小题2分,共10分)
21.此类定义有一处错误,请指出错误并改正。
classABC{
inta;
ABC(intaa)a(aa){}
22.下面程序通过调用函数模板实现计算两个正整数的最大公约数,把main函数中错误找出并改正过来。
#include<
iostream.h>
classT>
Tgcd(Tx,Ty){
while(x!
=y)
if(x>
y)x-=y;
elsey-=x;
returnx;
voidmain()
{
doubled;
cin>
>
a>
d;
cout<
gcd(a,d)<
endl;
23.指出下面程序中的错误,并说明出错原因。
classConstFun{
voidConstFun(){}
constintf5()const{return5;
intObj(){return45;
intval;
intf8();
intConstFun:
f8(){returnval;
constConstFuns;
inti=s.f5();
″Value=″<
i<
24.指出下面程序中的错误,并说明错误原因。
classA{
voidfun(){cout<
″a.fun″<
classB{
″b.fun″<
voidgun(){cout<
″b.gun″<
classC:
publicA,publicB{
intb;
voidgun(){cout<
″c.gun<
″endl;
voidmain(){
cobj;
obj.fun();
obj.gun();
25.指出下面程序段中的错误,并说明出错原因。
intzeroX,zeroY;
intSetZero(intzeroX,intzeroY){X=zeroX;
Y=zeroY;
floatradius;
voidinit(intinitX,intinitY){length=initX;
height=initY;
intGetX(){returnX;
intGetY(){returnY;
intmain(){
LocationretangleA={25,20,3,5,6,7,3};
return0;
四、完成程序题(每小题4分,共20分)根据题目要求填空,完成程序。
26.在下面程序段横线处填上适当的内容。
________
intn;
A(intnn=0):
n(nn){
if(n==0)a=0;
elsea=newint[n];
________//定义析构函数,释放动态数组空间
27.在下面程序横线处填上适当内容,使程序执行结果为:
200__100
程序如下:
#include<
template________
Tf(Tx,Ty){
if(sizeof(T)==__________)
returnx+y;
else
returnx*y;
cout<
f(10,20)<
″--″<
f(45.5,54.5)<
28.下面程序三次调用同一函数sum,在横线处填上适当内容,使输出结果为:
S=2
S=5
S=9
voidsum(inti)
staticints;
____________;
″S=″<
s<
voidmain(void)
inti;
for(i=0;
________)
sum(i);
29.请在下面横线处填上适当的内容,使程序的输出为:
7.00000
7
iomanip.h>
viodmain(){
doublex=7;
______________<
x;
endl<
30.在下面程序横线处填上适当的内容,使该程序输出结果为:
CreatingB
endofB
endofA
classA
A(){}
______________{cout<
″endofA″<
calssB:
publicA
B(){________}
~B(){cout<
″endofB″<
A*pa=newB;
deletepa
五、程序分析题(每小题5分,共30分)
给出下面各程序的输出结果。
31.当从键盘上输入1.510时,写出下面程序的执行结果。
voidmian()
inta,b,c;
charch;
ch>
b>
c;
//从键盘上输入1.510
a<
ch<
b<
输出为:
32.写出下面程序输出结果。
voidf(Ta[3][3],Tb[3][3],Tc[3][3])
for(inti=0;
3;
i++)
for(intj=0;
j<
j++){
c[i][j]=(T)0
for(intk=0;
k<
k++)
c[i][j]+=a[i][k]*b[j][k];
inta[3][3]={{1,2,3},{4,5,6},{7}},b[3][3],
c[3][3]={{2},{0,2},{0,0,2}};
f(a,c,b);
i++){
for(intj=0,j<
j++)
b[i][j]<
″″;
33.写出下面程序的输出结果。
classFUN{
friendostream&
operator<
(ostream&
FUN);
}fun;
ostream&
operator<
os,FUNf){
os.setf(ios:
left);
returnos;
setfill(′*′)<
setw(10)<
12345<
fun<
54321<
34.写出下面程序的输出结果。
classTest{
staticintval;
staticintfunc();
staticvoidsfunc(Test&
r);
intTest:
val=20;
func()
val--;
returnval;
voidTest:
sfunc(Test&
r)
r.a=25;
″Result3″=<
r.a;
″Resultl=″<
Test:
func()<
Testa;
″Result2=″<
a.func();
sfunc(a);
35.写出下面程序输出结果。
#include<
virtualvoidfunc(){cout<
″funcinclassA″<
endl;
classB
″funcinclassB″<
publicA,publicB
voidfunc(){cout<
″funcinclassC″<
Cc;
A&
pa=c;
B&
pb=c;
C&
pc=c;
pa.func();
pb.func();
pv.func();
36.写出下面程序的输出结果。
classLocation{
voidLocation:
init(intinitX,intinitY)
X=initX;
Y=initY;
intLocation:
GetX()
returnX;
GetY()
returnY;
voiddisplay(Location&
rL)
rL.GetX()<
″″<
rL.GetY()<
′\n′;
LocationA[5]={{0,0},{1,1},{2,2},{3,3},{4,4}};
Location*rA=A;
A[3].init(5,3);
rA->
init(7,8);
for(inti=0;
5;
display(*(rA++));
全国2002年10月高等教育自学考试面向对象程序设计参考答案
参考答案
一、单项选择题(本大题共lO小题,每小题2分:
共20分)
1.B 2.C 3.C 4.D 5.D 6.B 7.B 8.A 9.B 10.A
二、填空题(本大题共10小题,每小题2分,共20分)
11.~AB(){}
12.class(或typcname)
13.cout,sctf(ios:
:
hex,ios:
basefield)
(或cout.setf(ios:
hex),或cout<
settosflags(ios:
hex),其中ios:
"写成ios_base:
也可)
14.继承(或派生)15,域名限制(或其它含义等价的描述)
16.接口〈或界面.或公有成员〉
17.析构
18.友元函数
19.X,Y,length,height(说明:
每答对两个给1分)
20友元类(或友元函数,或友元)
三、改错题(本大题共5小题:
每小题2分,共lO分)说明:
各小题中,指出错误得l分,说明出错原因或改正正确得l分。
21.ABC(intaa)与a(aa){}之间少一个冒号,应改为ABC(tntlla):
a(aa){}
22.main函数中的gcd(a,d)改为gcd(a,(int)d)(或把doubled;
改为int;
或把gcd(a,d)改为gcd<int>
(a,d)或把gcd(a,b)改为gcd(a,int(d))=
23.程序中第4行“voidConstFun(){}”错误,因为声明构造函数时不能指定返回类型。
24.第15行obj.fun();
语句错误,因为用C类的对象obj对函数fun()的访问是两义的,应使用成员名限定来消除两义性。
25.locationretangleA={25,20,3,5,6,7,3};
语句错误,因为数据成员不都是公有成员,不能用初始化列
表初始化。
四、完成程序题(本大题共5小题,每小题4分,共20分)
26,int*a;
(2分)
~A(){delete[]a;
}(2分)
27.<classI>(2分)
sizeof(double)(或8或其他等价形式)
28.s+=2+i(或其他等价形式)(2分)
i<3;
i++(或其他等形式)(2分)
29.setiosflage(ios:
showpoint)(2分)
resetiosflags(ios:
说明:
其中ios:
可写成ios_basc:
30.virtual~A()(2分)
”creatingB”<
end;
五、程序分析题(本大题共6小题i每小题5分,共30分)
3l.1(1分)
.(2分)
5(1分)
10(1分)
32.246
8lO12
1400
每答对一行得2分,全部答对得5分。
33.*****12345(2分)
54321*****(3分)
34.Result1=19
Result2=18Result3=d0
(1)写对第一行结果得2分,只写出“Result1=”,而未写出结果“l9”,得l分。
(2)写对第二行结果得3分,只写出“Rcstilt2=18”或“Rcsidt3=25”,得2分。
(3)第一衍与第二行全写正确,但写在同一行上扣1分。
35.funcinclassC
funcinclassC
fundinclassC
每答对一行得2分,全部答对得5分。
36.78
11
22
53
44
每答对一行得1分。