voidmain()
{
Baseb;
Derived*p=&b;//不能把基类指针赋给派生类指针
b.fun();
p->fun();}
25.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因.#include
classA{
intx;
protected:
inty;
public:
A(intxx,intyy){x=xx;y=yy;}
};
classB:
publicA
{public:
B(inta,intb):
A(a,b){}
voiddisplay(){cout<};
voidmain(){Bb(5,10);b.display();}
四,完成程序题(本大题共5小题,每小题4分,共20分)
26.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:
2,14,3
#include
classA{
inta;
public:
A(inti=0){a=i;}
intGeta(){returna;}
};
classB{
Aa;
intb;
public:
B(inti=0,intj=0):
①a(j){b=i;}
voiddisplay(){cout<voidmain()
{
Bb[2]={B(1,2),B(3,4)};
for(inti=0;i<2;i++)
②b[i].display();
}
27.下面程序中A是抽象类.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:
B1calledB2called
#include
classA
{
public:
①virtualvoiddisplay()=0;
};
classB1:
publicA
{public:
voiddisplay(){cout<<"B1called"<};
classB2:
publicA
{public:
voiddisplay(){cout<<"B2called"<};
voidshow(②A*p){p->display();}
voidmain()
{
B1b1;
B2b2;
A*p[2]={&b1,&b2};
for(inti=0;i<2;i++)
show(p[i]);
}
28.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:
Name:
王小明Grade:
90
#include
#include
classPerson
{
charname[20];
public:
Person(char*s){strcpy(name,s);}
voiddisplay(){cout<<"Name:
"<};
classStudent:
publicPerson
{
intgrade;
public:
Student(char*s,intg):
①Person(s){grade=g;}
voiddisplay(){②display();cout<<"Grade:
"<};
voidmain()
{
Students("王小明",90);
s.display();
}
29.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为5.
#include
classInteger
{intx;
public:
Integer(inta=0){x=a;}
voiddisplay(){cout<①intget(){returnx;}
};
IntegerMax(Integera,Integerb){if(②a.get()>b.get())returna;returnb;}
voidmain()
{
Integera(3),b(5),c;
c=Max(a,b);
c.display();
}
30.请在下面的横线处填上适当内容,以使类的定义完整.
classArray
{
int*ptr;
intsize;
public:
Array(){size=0;ptr=0;}
Array(intn){size=n;ptr=newint[size];}
Array(①Array&a)//复制初始化构造函数
{size=a.size;ptr=newint[size];for(inti=0;i};
五,程序分析题(本大题共6小题,每小题5分,共30分)阅读下面的程序,写出程序运行的结果.
31.
#include
classTest
{private:
intnum;
public:
Test(intn=0){num=n;num++;}
~Test(){cout<<"Destructorisactive,number="<};
voidmain(){Testx[2];cout<<"Exitingmain"<Exitingmain
Destructorisactive,number=1
Destructorisactive,number==1
32.
#include
classA
{public:
virtualvoidfun(intdata){cout<<"classA:
"<voidfun(char*str){cout<<"classA:
"<};
classB:
publicA
{public:
voidfun(){cout<<"classB"<voidfun(intdata){cout<<"classB:
"<voidfun(char*str){cout<<"classB:
"<};
voidmain()
{
A*pA;
Bb;
pA=&b;
pA->fun
(1);
pA->fun("Hello");
}
classB:
1
classA:
Hello
33.
#include
voidmain()
{
cout.fill('*');
cout.width(10);
cout<<"123.45"<cout.width(8);
cout<<"123.45"<cout.width(4);
cout<<"123.45"<}
****123.45
**123.45
123.45
34.
#include
classNum{
intX,Y;
public:
Num(intx,inty=0){X=x;Y=y;}
voidvalue(intx,inty=0){X=x;Y=y;}
voidvalue()
{
cout<if(Y!
=0)cout<<(Y>0?
'+':
'-')<<(Y>0?
Y:
-Y)<<'i';
cout<}
};
voidmain()
{
Numn
(1);
n.value();
n.value(2,3);
n.value();
Numm(3,-4);
m.value();
}
1
2+3i
3-4i
35.
#include
classSample
{
private:
inti;
staticintcount;
public:
Sample();
voiddisplay();
};
Sample:
:
Sample(){i=0;count++;}
voidSample:
:
display(){cout<<"i="<
intSample:
:
count=0;
voidmain()
{
Samplea,b;
a.display();
b.display();
}
i=0,cout=2
i=0,cout=2
36.
#include
classA
{
inta;
public:
A(intaa=0){a=aa;cout<<"a="<};
classB
{
intb;
public:
B(intbb=0){b=bb;cout<<"b="<
};
classC:
publicB
{
Aa;
public:
C(){cout<<"Cdefaultconstructor"<C(inti,intj):
a(i),B(j){cout<<"Cconstructor"<};
voidmain()
{
Cc1,c2(5,6);
}
b=0
a=0
Cdefaultconstructor
b=6
a=5
Cconstructor
参考答案
(一)
一,单项选择题(本大题共lO小题,每小题2分:
共20分)
1.D2.B3.C4.C5.B6.D7.D8.B9.A10.B
二,填空题(本大题共10小题,每小题2分,共20分)
11.类
12.ifstreamfin("Test.txt");
13.friendvoidB:
:
fun();
14.deletep;
15.赋初值
16.constdoublePI=3.14159;
17.形参的类型18.Aoperator++(A);
19.虚
20.私有的
三,改错题(本大题共5小题:
每小题2分,共lO分)说明:
各小题中,指出错误得l分,说明出错原因或改正正确得l分.
21.错误:
intoperatorint(){returndata;}修改:
intoperator+(){returndata;}
22.错误:
voiddisplay(){cout<voiddisplay(){cout<23.错误:
Swap(str1,str2);原因:
需要特定模板
24.错误:
Derived*p=&b;原因:
不能把基类指针赋给派生类指针
25.错误:
voiddisplay(){cout<x是不可访问的
四,完成程序题(本大题共5小题,每小题4分,共20分)
26.①.a(j){b=i;②.b[i].display
27.①.virtualdisplay(){}②.A*p
28.①.Person(s)②.display()
29.①.intget(){returnx;}②.a.get>b.get()
30.①.Array&a②.ptr[i]=a.ptr[i]
五,程序分析题(本大题共6小题,每小题5分,共30分)
31.ExitingmainDestructorisactive,number=1Destructorisactive,number=1
32.classB:
1classA:
Hello
33.****123.45**123.45123.45
34.12+3i3-4i
35.i=0,count=2i=0,count=2
36.b=0a=0Cdefaultconstructorb=6a=5CconstructorCconstructor