C++实验三 派生类与继承Word文档下载推荐.docx
- 文档编号:19055891
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:14
- 大小:142KB
C++实验三 派生类与继承Word文档下载推荐.docx
《C++实验三 派生类与继承Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++实验三 派生类与继承Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
c'
)设填充字符为c
*setprecision(n)设显示有效数字为n位
*setw(n)设域宽为n个字符
*这个控制符的意思是保证输出宽度为n。
************************************
#include<
iomanip>
usingnamespacestd;
//基类
classtable
{
public:
//构造函数
table(charp,charq)
{
i=p;
j=q;
}
voidascii(void);
protected:
chari;
charj;
};
///////////////////////////////////////////////////////
voidtable:
:
ascii(void)
intk=1;
for(;
i<
=j;
i++)
cout<
<
setw(4)<
(int)i;
if((k)%12==0)//每12个换行
cout<
"
\n"
;
k++;
cout<
}
//派生类
classder_table:
publictable
der_table(charp,charq,char*m):
table(p,q)//派生类的构造函数
c=m;
voidprint(void);
char*c;
//////////////////////////////////////////////////////////
voidder_table:
print(void)
c<
table:
ascii();
//主函数
intmain()
der_tableobl('
a'
'
z'
"
ASCIIvalue---char"
);
obl.print();
return0;
/*****************************************
提示:
修改后的主程序为:
der_tableob('
ob.print();
*******************************************/
/********************************************************************
*2、已有类Time和Date,要求设计一个派生类Birthtime,
*它继承类Time和Date,并且增加一个数据成员Childname用于表示小孩的名字,
*同事设计主程序显示一个小孩的出生时间和名字。
*********************************************************************/
/*#include<
string>
//////////////////////////////////////////////////////////////////////////////////
classTime
Time(inth,intmi,ints)
{
hours=h;
minutes=mi;
seconds=s;
}
voiddisplay()
出生时间:
hours<
时"
minutes<
分"
seconds<
秒"
endl;
inthours;
intminutes;
intseconds;
////////////////////////////////////////////////////////////////////////////////////
classDate
Date(intm,intd,inty)
month=m;
day=d;
year=y;
voiddisplay()
cout<
出生年月:
year<
年"
month<
月"
day<
日"
intmonth;
intday;
intyear;
/////////////////////////////////////////////////////////////////////////////////////
classBirthTime:
publicTime,publicDate
BirthTime(inth,intmi,ints,intm,intd,inty,stringn):
Time(s,h,m),Date(m,d,y){
name=n;
voiddisplay(){
姓名为:
name<
private:
stringname;
intmain(){
BirthTimechild(36,34,12,11,30,2013,"
小明"
child.display();
child.Date:
display();
child.Time:
return0;
}*/
/*************************************************
3、编写一个学生和教师的数据输入和显示程序。
学生数据有编号、姓名、性别、年龄、系别和成绩,
教师数据有编号、姓名、性别、年龄、职称和部门。
要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。
****************************************************************************************************
///////////////////////////////////////////////////////////////////////
classPerson
Person(intnu,stringna,stringse,intag)
number=nu;
name=na;
sex=se;
age=ag;
voiddisplay()
编号:
"
number<
姓名:
性别:
sex<
年龄:
age<
intnumber;
//编号
//姓名
stringsex;
//性别
intage;
//年龄
////////////////////////////////////////////////////////////////////////
classStudent:
publicPerson
Student(intnu,stringna,stringse,intag,stringfa,doublesc):
Person(nu,na,se,ag)
faculty=fa;
score=sc;
系别:
faculty<
成绩:
score<
stringfaculty;
//系别
doublescore;
//成绩
classTeacher:
Teacher(intnu,stringna,stringse,intag,stringpo,stringde):
position=po;
department=de;
职称:
position<
部门:
department<
stringposition;
//职称
stringdepartment;
//部门
Studenta(122536,"
男"
19,"
计算机院"
87);
Teacherb(122533,"
王明"
33,"
特级教师"
教务处"
学生"
a.Person:
a.display();
老师"
b.Person:
b.display();
/********************
4、给出下面的基类:
classarea
doubleheight;
doublewidth;
area(doubleh,doublew)
height=h;
width=w;
virtualdoublegetarea()=0;
【要求】
(1)建立基类area的俩个派生类rectangle与isosceles,
让每一个派生类都包含一个函数getarea(),分别用来返回矩形与三角形的面积。
用
构造函数对height与width进行初始化。
(2)写出主程序,用来求height与width分别为10.0与5.0的矩形面积,以及求height与width分别为4.0与6.0的三角形面积。
(3)要求通过使用基类指针访问虚函数的方法(即运行时的多态性)分别求出矩形和三角形面积。
****************************************************************************************/
///////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
classrectangle:
virtualpublicarea
rectangle(doubleh,doublew):
area(h,w)
h1=h;
w1=w;
virtualdoublegetarea()
矩形的面积为:
h1*w1<
returnh1*w1;
doubleh1;
doublew1;
classisosceles:
virtualpublicarea
isosceles(doubleh,doublew):
h2=h;
w2=w;
三角形的面积:
(h2*w2)/2<
return(h2*w2)/2;
doubleh2;
doublew2;
rectanglea(10.0,5.0);
a.getarea();
isoscelesb(4.0,6.0);
b.getarea();
/***************************************************************
5、编写一个程序,递归调用被继承的基类成员函数,实现求素数的功能。
******************************************************************/
///////////////////////////////////
classNumber{
Number()
{}
Number(inti)
m=i;
boolisprime(inti);
intm;
//////////////////////////////////
boolNumber:
isprime(inti)
if(m==2)
return1;
if(m==1||m%2==0)
if(m%i!
=0)
returnisprime(i+2);
else
if(i>
m/2)
classprime:
publicNumber{
prime(inti=0):
Number(i)
intmain(void)
intn;
请输入一个数"
cin>
>
n;
primeobj(n);
if(obj.isprime(3))
n<
是素数"
不是素数"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+实验三 派生类与继承 C+ 实验 派生 继承