全国自考面向对象程序设计试题及答案解析Word文件下载.docx
- 文档编号:20037284
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:14
- 大小:19.04KB
全国自考面向对象程序设计试题及答案解析Word文件下载.docx
《全国自考面向对象程序设计试题及答案解析Word文件下载.docx》由会员分享,可在线阅读,更多相关《全国自考面向对象程序设计试题及答案解析Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
C.执行类X的func()
D.执行类Y的func()
8.以下叙述正确的是()
A.构造函数调用虚函数采用动态联编
B.构造函数可以说明为虚函数
C.当基类的析构函数是虚函数时,它的派生类的析构函数也是虚函数
D.析构函数调用虚函数采用动态联编
9.以下关于抽象类的描述正确的是()
A.不能说明指向抽象类对象的指针或引用
B.可以说明抽象类对象
C.抽象类的纯虚函数的实现可以由自身给出,也可以由派生类给出
D.抽象类的纯虚函数的实现由派生类给出
10.在下面格式化命令的解释中,错误的是()
A.ios:
:
skipws跳过输入中的空白字符
B.ios:
fill()获得当前的填充字符
C.ios:
hex转换基数为八进制形式
D.ios:
precision返回当前的精度
11.下面运算符中,不能被重载的运算符是()
A.<
=B.-C.?
D.[]
12.下列有关模板和继承的叙述正确的是()
A.模板和继承都可以派生出一个类系
B.从类系的成员看,模板类系的成员比继承类系的成员较为稳定
C.从动态性能看,继承类系比模板类系具有更多的动态特性
D.相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系
二、填空题(本大题共8小题,每小题2分,共16分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
13.在C++中函数原型不但能标识函数的__________,而且能标识函数参数的__________。
14.如果类的名称是MyClass则析构函数名为__________,一个类最多能有__________个析构函数。
15.假设类X的对象x是类Y的成员对象,则“YObj”语句执行时,先调用类__________的构造函数,再调用类__________的构造函数。
16.基类的公有成员在私有派生类中是__________成员,基类的保护成员在公有派生类中是__________成员。
17.对虚函数使用对象指针或引用,系统使用__________联编,对虚函数使用对象调用时,系统使用__________联编。
18.静态成员定义的关键字为__________,一般通过__________来访问静态成员。
19.类在面向对象程序设计中非常重要,在设计类时可以参考一些原则,如充分利用__________增加类的自身可靠性,通过继承建立__________等等。
20.将关键字__________写在函数体之前函数头之后,说明该函数是一个__________,可以防止函数改变数据成员的值。
三、改错题(本大题共5小题,每小题2分,共10分)
21.指出下面引用性说明类MyClass的用法的错误之处,并说明出错原因。
classMyClass;
voidmain(){
MyClassobj1;
MyClass*p;
voidfunc(MyClassobj);
}
22.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。
classbase{
protected:
intp;
public:
Base(intm){p=m;
};
voidf()
{Basea(10);
cout<
<
a.p<
endl;
23.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。
classbase{
public:
intx;
classOne:
publicbase{};
classTwo:
classOT:
publicOne,publicTwo{
intfunc();
OTp;
p.base:
x;
24.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。
classBase{
virtualvoidfun()=0;
classTest:
publicBase{
virtualvoidfun(){cout<
″Test.fun=″<
Basea;
Test*p;
p=&
a;
25.下面程序中有一处错误,请用下横线标出错误所在行并提出修改意见。
classA{
private:
staticintx;
voidfunc(inta)
{
x=a;
四、完成程序题(本大题共5小题,每小题4分,共20分)
26.为使下面程序输出结果为:
1*2
3+4
请在横线处填上适当的字句,以使程序完整。
#include<
iostream.h>
classA
{
intR1,R2;
A(intr1,intr2){R1=r1;
R2=r2;
}
voidprint();
voidprint()const;
voidA:
print()
cout<
R1<
①__________<
R2<
print()const
②__________<
}
voidmain()
Aa(1,2);
constAb(3,4);
a.print();
b.print();
27.在下面横线处填上适当字句,完成类中成员函数的定义。
classA
intX,Y;
A(){X=Y=0;
}
A(intxx,intyy):
X(xx),Y(yy){}
A(A&
a){
①__________
}
intGetX(){returnX;
intGetY(){returnY;
voidSetXY(intx,inty){X=x;
Y=y;
intmain()
A*Ptr=newA[2];
Ptr[0].SetXY(5,10);
Ptr[1].SetXY(15,20);
″ReleasePtr……″<
②__________;
//释放动态分配内存
return0;
28.请在横线处填上适当的字句,以使程序完整。
#include″math.h″
classPoint
doubleX,Y;
①__________Line;
Point(doublex=0,doubley=0){
X=x;
Point(Point&
p){
X=p.X;
Y=p.Y;
classLine
Pointp1,p2;
Line(Point&
xp1,Point&
xp2):
②__________{}
doubleGetLength();
doubleLine:
GetLength()
{doubledx=p2.X-p1.X;
doubledy=p2.Y-p1.Y;
returnsqrt(dx*dx+dy*dy);
voidmain()
Pointp1,p2(3,4);
LineL1(p1,p2);
cout<
L1.GetLength()<
29.下面程序横线处填上适当的字句,使类定义完整。
#include<
iomanip.h>
classArrayFloat
float*pA;
intsize;
//数组大小(元素个数)
ArrayFloat(intsz=10)
{size=sz;
pA=newfloat[size];
~ArrayFloat(void)
①__________;
//释放动态内存
intGetSize(void)const
{returnsize;
float&
operator[](inti)//重载数组元素操作符″[]″
{returnpA[i];
voidPrint();
voidArrayFloat:
Print()
{inti;
for(i=0;
i<
②__________;
i++)
if(i%10==0)
cout<
endl;
setw(6)<
pA[i];
{ArrayFloata(20);
for(inti=0;
a.GetSize();
a[i]=(float)i*2;
a.Print();
30.在横线处填上适当字句,完成下面复数类的定义。
classComplex
doublereal,image;
Complex(doubler=0,doublei=0){real=r;
image=i;
friendComplexoperator+(Complex&
a,constComplex&
c);
//复数加法运算符
Complexoperator=(Complexc2);
//复数赋值运算符
Complexoperator+(Complex&
b)
Complex*t=newComplex(①__________);
return*t;
ComplexComplex:
operator=(Complexc2)
real=c2.real;
image=c2.image;
return(②__________);
五、程序分析题(本大题共6小题,每小题5分,共30分)
31.写出下面程序的输出结果。
classB{
intY;
B(inty=0){Y=y;
″B(″<
y<
″)\n″;
~B(){cout<
″~B()\n″;
voidprint(){cout<
Y<
″″;
};
classD:
publicB{
intZ;
D(inty,intz):
B(y)
{Z=z;
″D(″<
″,″<
z<
}
~D(){cout<
″~D()\n″;
voidprint(){
B∶∶print();
cout<
Z<
{Dd(11,22);
d.print();
32.写出下面程序的输出结果。
doubleX,Y;
A(doublexx=0,doubleyy=0)
{X=xx;
Y=yy;
″构造函数被调用(″<
X<
″)″<
A(A&
p){X=p.X;
Af()
{Aa(1,2);
returna;
{Aa(4,5);
Ab(a);
b=f();
33.写出下面程序的输出结果。
classA{
virtualvoidf(){cout<
″A:
f()\n″;
classB:
publicA
char*buf;
B(inti){
buf=newchar[i];
voidf(){
″B:
~B(){delete[]buf;
{A*a=newA;
a->
f();
deletea;
a=newB(15);
a->
34.写出下面程序的输出结果。
{inta[9]={1,2,3,4,5,6,7,8,9};
for(inti=0;
9;
i++){
setw(4)<
a[i];
if(i%3==2)
35.写出下面程序的输出结果。
template<
typenameT>
voidprint(Ta[],intn)
{for(inti=0;
n;
{cout<
a[i]<
″″;
if(i%5==4)
inta[]={1,2,3,4,5,6,7};
doubleb[4]={8,9,10,11};
print(a,sizeof(a)/sizeof(int));
print(b,4);
36.写出下面程序的输出结果。
staticintn;
intX;
A(intx=0){X=x;
n++;
~A(){n--;
staticintGetNum(){returnn;
voidA∶∶print(){cout<
″n=″<
n<
″,X=″<
X<
intA∶∶n=0;
{A*p=newA(12);
p->
print();
Aa(34);
deletep;
A:
GetNum()<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 自考 面向 对象 程序设计 试题 答案 解析