}
第六章
一、选择题
1.A2.D3.C4.C5.B6.D7.D8.D9.D10.D
二、填空题
1.修改2.463.newint[10];4.int*ip=newint[10];
5.Worker*r=newWorker[n];6.*(x.a)
三、写出程序运行结果
1.20
第七章
一、选择题
1.D2.A3.A4.C5.B6.A7.B8.A9.D10.B
11.A12.B13.C14.C15.A16.D17.D18.C19.C20.C
21.A22.B23.A24.A25.D26.A27.A
二、填空题
1.抽象2.类3.private4.无参构造函数
三、判断题
1.×2.×3.√4.√5.√6.×7.×
四、写出程序运行结果
1.1035,789.504
2.A构造函数
A:
:
fun()函数
B构造函数
B:
:
fun()calle函数
3.a=7,b=9
六、编程题
1.classclock{
public:
voidsetTime(intnewH,intnewM,intnewS);
voidshowTime();
private:
inthour,hinute,second;
};
voidClock:
:
setTime(intnewH,intnewM,intnewS){
hour=newH;
minute=newM;
second=newS;
}
voidClock:
:
showTime(){
cout<"<"<}
intmain(){
ClockmyClock;
myClock.setTime(8,30,30);
myClock.showTime();
return0;
}
2.#include
#include
usingnamespacestd;
classTime
{public:
Time(inth=0,intm=0,ints=0):
hr(h),min(m),sec(s)
{norm();}
inthours()
{returnhr;}
intminutes()
{returnmin;}
intseconds()
{returnsec;}
voidadv(int=0,int=0,int=1);
voidreset(int=0,int=0,int=0);
voidprint()
{cout<
"<"<private:
inthr,min,sec;
voidnorm();
};
voidTime:
:
norm()
{min+=sec/60;
hr+=min/60;
hr%=24;
min%=60;
sec%=60;
}
voidTime:
:
adv(inth,intm,ints)
{hr+=h;
min+=m;
sec+=s;
norm();
}
voidTime:
:
reset(inth,intm,ints)
{hr=h;
min=m;
sec=s;
norm();
}
intmain()
{Timet(12,52,01);
t.print();
cout<t.adv();
t.print();
cout<t.adv(3,5,2);
t.print();
cout<return0;
}
3.//程序实现
#include
#include
usingnamespacestd;
classPoint//Point类声明
{
public:
Point(intxx=0,intyy=0){X=xx;Y=yy;}
Point(Point&p);
intGetX(){returnX;}
intGetY(){returnY;}
private:
intX,Y;
};
Point:
:
Point(Point&p)//拷贝构造函数的实现
{
X=p.X;
Y=p.Y;
cout<<"Point拷贝构造函数被调用"<}
//类的组合
classLine//Line类的声明
{
public:
//外部接口
Line(Pointxp1,Pointxp2);
Line(Line&);
doubleGetLen(){returnlen;}
private:
//私有数据成员
Pointp1,p2;//Point类的对象p1,p2
doublelen;
};
//组合类的构造函数
Line:
:
Line(Pointxp1,Pointxp2)
:
p1(xp1),p2(xp2)
{
cout<<"Line构造函数被调用"<doublex=double(p1.GetX()-p2.GetX());
doubley=double(p1.GetY()-p2.GetY());
len=sqrt(x*x+y*y);
}
//组合类的拷贝构造函数
Line:
:
Line(Line&Seg):
p1(Seg.p1),p2(Seg.p2)
{
cout<<"Line拷贝构造函数被调用"<len=Seg.len;
}
//主函数
intmain()
{
Pointmyp1(1,1),myp2(4,5);//建立Point类的对象
Lineline(myp1,myp2);//建立Line类的对象
Lineline2(line);//利用拷贝构造函数建立一个新对象
cout<<"Thelengthofthelineis:
";
cout<cout<<"Thelengthoftheline2is:
";
cout<}
第八章
一、选择题
1.C2.D3.B4.A5.B6.A7.D8.D9.D10.C
11.C12.B13.B14.C15.B16.A17.C18.C19.A20.B
21.A22.D23.D24.D25.C26.B27.A28.C29.C30.D
31.C32.B33.C34.D35.C36.D37.C38.D39.C40.B
41.A42.B43.D44.D45.A46.B47.A48.B49.B50.C
51.A52.D53.C
二、填空题
1.单继承2.单3.单4.继承5.多继承6.:
:
7.不具有的成员
8.访问控制方式或继承方式9.从基类继承的成员10.操作数11.纯虚
12.virtual13.014.多态性15.抽象类16.纯虚17.纯虚函数的定义
18.类成员19.类成员20.重载21.2
三、判断题
1.√2.√3.√4.√5.×6.×7.×8.√9.√10.×
11.√12.×13.×14.√15.√16.×17.√18.√19.√20.√
21.√22.×23.√24.×25.√26.×27.√28.√29.√
四、写出程序运行结果
1.{13,22,30,40}
2.aprog...
aprog...
cprog...
3.B:
:
show()called.158
D:
:
show()called.208
4.ft:
:
y=3
五、编程题
1.classPoint{//基类Point类的定义
public:
//公有函数成员
voidinitPoint(floatx=0,floaty=0){this->x=x;this->y=y;}
voidmove(floatoffX,floatoffY){x+=offX;y+=offY;}
floatgetX()const{returnx;}
floatgetY()const{returny;}
private:
//私有数据成员
floatx,y;
};
classRectangle:
publicPoint{//派生类定义部分
public:
//新增公有函数成员
voidinitRectangle(floatx,floaty,floatw,floath){
initPoint(x,y);//调用基类公有成员函数
this->w=w;
this->h=h;
}
floatgetH()const{returnh;}
floatgetW()const{returnw;}
private:
//新增私有数据成员
floatw,h;
};
#include
#include
usingnamespacestd;
intmain(){
Rectanglerect;//定义Rectangle类的对象
//设置矩形的数据
rect.initRectangle(2,3,20,10);
rect.move(3,2);//移动矩形位置
cout<<"Thedataofrect(x,y,w,h):
"<//输出矩形的特征参数
cout<<<<return0;
}
2.classA{
public:
voidsetA(int);
voidshowA()const;
private:
inta;
};
classB{
public:
voidsetB(int);
voidshowB()const;
private:
intb;
};
classC:
publicA,privateB{
public:
voidsetC(int,int,int);
voidshowC()const;
privateconst:
intc;
};
voidA:
:
setA(intx){
a=x;
}
voidB:
:
setB(intx){
b=x;
}
voidC:
:
setC(intx,inty,intz){
//派生类成员直接访问基类的
//公有成员
setA(x);
setB(y);
c=z;
}
//其他函数实现略
intmain(){
Cobj;
obj.setA(5);
obj.showA();
obj.setC(6,7,9);
obj.showC();
//obj.setB(6);错误
//obj.showB();错误
return0;
}