继承与多态性习题参考答案.docx

上传人:b****6 文档编号:5877273 上传时间:2023-01-01 格式:DOCX 页数:13 大小:17.91KB
下载 相关 举报
继承与多态性习题参考答案.docx_第1页
第1页 / 共13页
继承与多态性习题参考答案.docx_第2页
第2页 / 共13页
继承与多态性习题参考答案.docx_第3页
第3页 / 共13页
继承与多态性习题参考答案.docx_第4页
第4页 / 共13页
继承与多态性习题参考答案.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

继承与多态性习题参考答案.docx

《继承与多态性习题参考答案.docx》由会员分享,可在线阅读,更多相关《继承与多态性习题参考答案.docx(13页珍藏版)》请在冰豆网上搜索。

继承与多态性习题参考答案.docx

继承与多态性习题参考答案

继承与多态性习题参考答案

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

C++程序设计语言习题及实验指导

第8章继承与多态性习题参考答案

8.3习题

8.3.1选择题

题号

1

2

3

4

5

6

7

8

9

10

答案

C

D

A

D

A

B

C

B

D

D

题号

11

12

13

14

15

16

17

18

19

20

答案

D

D

A

C

B

C

C

C

A

C

8.3.2填空题

1.

(1)a、b、c、x、y、z

(2)b、y(3)c、z(4)a、x(5)b、c、x、y、z

(6)b、y(7)y(8)b、c、z(9)a、x(10)b、c、x、y、z(11)y

(12)y(13)z(14)a、b、c、x(15)b、c、x、y、z(16)y

2.私有

3.抽象

4.虚基

5.

(1)基类

(2)对象

6.

(1)静态

(2)编译(3)虚函数

7.

(1)21

(2)05

8.

(1)10020030030

(2)10100(3)20200

9.

(1)510

(2)end.(3)2010

10.

(1)classAclassB

(2)end.(3)~classB~classA

11.

(1)10

(2)buildB(3)buildC(4)releaseA

12.

(1)classB

(2)classC(3)classD(4)5

13.

(1)55

(2)2020

14.

(1)10

(2)1020

15.

(1)1

(2)3(3)5(4)10010

16.

(1)B:

:

f()

(2)B:

:

fun()(3)A:

:

f()(4)B:

:

fun()

17.

(1)姓名陈涛年薪6.8万元。

(2)姓名李原(3)姓名李原月工资4000元

18.

(1)110

(2)2220

19.

(1)protected或public

(2)Base1(s1),Base2(s2)或Base2(s2),Base1(s1)

(3)Base1:

:

str(4)test.print()

20.

(1)virtualvoidshow()=0

(2)C(int,int,int)(注:

参数可有任一名称)

(3)b1(y)(4)&t

8.3.3编程题

1.求长方形的面积和长方体的表面积、体积

#include

classRectangle{

protected:

floatL;//长方形的长

floatW;//长方形的宽

floatarea;//长方形的面积

public:

Rectangle(floatL1,floatW1)

{

L=L1;

W=W1;

}

voidfunction(){area=L*W;}

voidshow()

{

cout<<"长为"<

}

};

classCuboid:

publicRectangle{

floatH;//长方体的高

floatvolume;//长方体的体积

public:

Cuboid(floata,floatb,floatc):

Rectangle(a,b)

{H=c;}

voidfunction(){area=(L*W+L*H+W*H)*2;}

voidfun(){volume=L*W*H;}

voidshow()

{

cout<<"长为"<

}

};

voidmain()

{

Rectangler(2,3);r.function();r.show();

Cuboidc(2,3,4);c.function();c.fun();c.show();

}

2.产生并输出圆桌信息

#include

#include

classCircle{

protected:

doubleradius;

doublearea;

public:

Circle(doubler){radius=r;}

};

classTable{

protected:

doubleheight;

public:

Table(doubleh){height=h;}

};

classRoundtable:

publicTable,publicCircle

{

char*color;

public:

Roundtable(doubleh,doubler,charc[]):

Circle(r),Table(h)

{

color=newchar[strlen(c)+1];

strcpy(color,c);

}

voidfun(){area=3.14*radius*radius;}

voidshow()

{

cout<<"高度:

"<

cout<<"面积:

"<

cout<<"颜色:

"<

}

~Roundtable(){delete[]color;}

};

voidmain()

{

Roundtablert(0.75,1.1,"黑色");

rt.fun();rt.show();

}

3.计算企业的经营税

#include

#include

classTax{

protected:

charname[50];//企业名称

doubleincome;//经营收入

doubletaxes;//税金

public:

Tax(char*n,doublein)

{

strcpy(name,n);

income=in;

}

virtualvoidfun()=0;

voidshow()

{

cout<

}

};

classService:

publicTax{

public:

Service(char*n,doublein):

Tax(n,in)

{}

voidfun()

{

taxes=income*5/100;

}

};

classFabrication:

publicTax{

public:

Fabrication(char*n,doublein):

Tax(n,in)

{}

voidfun()

{

taxes=income*17/100;

}

};

voidprint(Tax&t){t.fun();t.show();}

voidmain()

{

charname[50];

intincome;

cout<<"请输入服务性企业名称:

";cin>>name;

cout<<"请输入经营收入(万元):

";cin>>income;

Services(name,income);print(s);

cout<<"请输入生产性企业名称:

";cin>>name;

cout<<"请输入经营收入(万元):

";cin>>income;

Fabricationf(name,income);print(f);

}

4.把原始体育成绩转换为等第

#include

classSports{

protected:

intitem;//项目

charname[20];//姓名

doublescore;//原始成绩

chargrade[10];//评定等第

public:

Sports(inti,char*n)

{

item=i;

strcpy(name,n);

cout<<"请输入原始成绩:

";

cin>>score;

}

voidshow()

{

cout<

}

virtualvoidchange()=0;

};

classRun50:

publicSports{

public:

Run50(inti,char*n):

Sports(i,n)

{}

voidchange()

{

if(score<=6.50)strcpy(grade,"优秀");

elseif(score<=6.70)strcpy(grade,"良好");

elseif(score<=7.10)strcpy(grade,"及格");

elsestrcpy(grade,"不及格");

}

};

classRun100:

publicSports{

public:

Run100(inti,char*n):

Sports(i,n)

{}

voidchange()

{

if(score<=13.10)strcpy(grade,"优秀");

elseif(score<=13.70)strcpy(grade,"良好");

elseif(score<=14.90)strcpy(grade,"及格");

elsestrcpy(grade,"不及格");

}

};

classRun1000:

publicSports{

public:

Run1000(inti,char*n):

Sports(i,n)

{}

voidchange()

{

if(score<=203.00)strcpy(grade,"优秀");

elseif(score<=213.00)strcpy(grade,"良好");

elseif(score<=233.00)strcpy(grade,"及格");

elsestrcpy(grade,"不及格");

}

};

classRun1500:

publicSports{

public:

Run1500(inti,char*n):

Sports(i,n)

{}

voidchange()

{

if(score<=323.00)strcpy(grade,"优秀");

elseif(score<=337.00)strcpy(grade,"良好");

elseif(score<=365.00)strcpy(grade,"及格");

elsestrcpy(grade,"不及格");

}

};

voidmain()

{

Sports*s;

intit;

cout<<"请输入项目(50/100/1000/1500):

";cin>>it;

charna[20];

cout<<"请输入姓名:

";cin>>na;

if(it==50){Run50r50(it,na);s=&r50;s->change();s->show();}

elseif(it==100){Run100r100(it,na);s=&r100;s->change();s->show();}

elseif(it==1000){Run1000r1000(it,na);s=&r1000;s->change();s->show();}

elseif(it==1500){Run1500r1500(it,na);s=&r1500;s->change();s->show();}

else{cout<<"输入项目错误\n";exit(0);}

}

 

8.4实验指导

8.4.1派生类的定义与使用:

设计一个程序求三角函数的值。

#include

#include

classTrigonometric{

protected:

doublearc;

doublevalue;

public:

Trigonometric(intt)

{

arc=t%360*3.14159/180;

value=0;

}

};

classSine:

publicTrigonometric{

public:

Sine(intt):

Trigonometric(t)

{}

doublef1(doublex,intn)

{

doublet=1;

for(inti=0;i

t*=x;

returnt;

}

intf2(intn)

{

if(n==0||n==1)return1;

elsereturnn*f2(n-1);

}

voidfunction()

{

inti=1,k=1;

doublet;

do{

t=k*f1(arc,2*i-1)/f2(2*i-1);

value+=t;

i++;

k*=-1;

}while(fabs(t)>=1e-6);

}

voidshow()

{

cout<<"sin("<

}

};

voidmain()

{

intd;

cout<<"请输入度数:

";

cin>>d;

Sinesin(d);

sin.function();

sin.show();

}

8.4.2虚函数实现运行多态性:

设计一个程序判断某人是否为优秀教师或优秀学生。

#include

classPeople{

protected:

charcategory[20];//人员类别

charname[10];//姓名

intnum;//分数或论文数

intresult;//结论,1为优秀,0为不优秀

public:

People()

{

cout<<"请输入人员类别:

";cin>>category;

cout<<"请输入姓名:

";cin>>name;

}

voidshow()

{

if(result)cout<

elsecout<

}

virtualvoidinputnum()=0;

virtualvoidisgood()=0;

};

classStudent:

publicPeople{

public:

voidinputnum()

{

cout<<"请输入分数:

";

cin>>num;

}

voidisgood(){result=(num>90)?

1:

0;}

};

classTeacher:

publicPeople{

public:

voidinputnum()

{

cout<<"请输入论文数:

";

cin>>num;

}

voidisgood(){result=(num>5)?

1:

0;}

};

voidmain()

{

People*p;

Students;

p=&s;

p->inputnum();p->isgood();p->show();//A

Teachert;

p=&t;

p->inputnum();p->isgood();p->show();//B

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1