继承与派生参考代码.docx
- 文档编号:25877545
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:31
- 大小:18.69KB
继承与派生参考代码.docx
《继承与派生参考代码.docx》由会员分享,可在线阅读,更多相关《继承与派生参考代码.docx(31页珍藏版)》请在冰豆网上搜索。
继承与派生参考代码
1197:
继承与派生1
Description
请以点类Point为基类派生出一个圆类Circle。
圆类Circle的数据成员为r(私有属性,存储圆的半径,圆心的点坐标通过继承点类Point加以实现),成员函数有构造函数Circle、计算圆的面积函数Area、计算圆的周长函数Perimeter和输出函数Display,其中构造函数实现基类和圆类的数据成员的初始化,Display函数实现圆心坐标(利用基类Point的Display实现)、圆的半径、圆的面积(利用Area函数实现)和圆的周长(利用Perimeter函数实现)的输出。
请编写圆类的定义及成员函数实现,并在主函数中定义圆类对象,验证各个函数的正确性。
说明:
圆周率PI的取值为
已知Point类的定义及main代码如下:
(不允许改动)
classPoint
{
public:
Point(doublexx,doubleyy);//constructor
voidDisplay();//displaypoint
private:
doublex,y;//平面的点坐标x,y
};
intmain()
{
doublex,y,r;
cin>>x>>y>>r;//圆心的点坐标及圆的半径
CircleC(x,y,r);
();//输出圆心点坐标,圆的半径,圆的面积,圆的周长
return0;
}
Input
Output
SampleInput
SampleOutput
Center:
Point,
Radius:
Area:
Perimeter:
**************************************************************************
#include
usingnamespacestd;
classPoint
{
public:
Point(doublexx,doubleyy)//constructor
{
x=xx;
y=yy;
}
voidDisplay()//displaypoint
{
cout<<"Center:
Point("< } private: doublex,y;//平面的点坐标x,y }; classCircle: publicPoint { private: doubler; public: Circle(doublexx,doubleyy,doublerr): Point(xx,yy) { r=rr; } doubleArea() { return*r*r; } doublePerimeter() { return2**r; } voidDisplay() { Point: : Display(); cout<<"Radius: "< cout<<"Area: "< cout<<"Perimeter: "< } }; intmain() { doublex,y,r; cin>>x>>y>>r;//圆心的点坐标及圆的半径 CircleC(x,y,r); ();//输出圆心点坐标,圆的半径,圆的面积,圆的周长 return0; } 1217: 继承与派生2 Description Person类派生大学生CollegeStu类 (1)。 设计一个Person类,其属性包括姓名name和身份证号id,其中name为指针类型,id为整型,编写成员函数: 构造函数Person、Display函数(显示数据成员信息)和析构函数;由Person类派生出大学生类CollegeStu,其属性有专业subject(指针类型),C++程序设计课程成绩score(double型),编写构造函数(实现数据初始化)、输出函数Display(包括name,id,subject,score)。 main的代码如下: (不允许改动) intmain() { charname[81],subject[81]; intid; doublescore; cin>>name>>id>>subject>>score; CollegeStucs(name,id,subject,score); (); return0; } Input Output SampleInput Zhangsan2Computer SampleOutput Name: Zhangsan ID: 2 Subject: Computer C++Score: ************************************************************************** #include #include usingnamespacestd; classPerson { private: char*name; intid; public: Person() { name=NULL; id=0; } Person(char*name1,intid1) { name=newchar[strlen(name1)+1]; strcpy(name,name1); id=id1; } ~Person() { delete[]name; } voidDisplay() { cout<<"Name: "< cout<<"ID: "< } }; classCollegestu: publicPerson { private: char*subject; doublescore; public: Collegestu() { subject=NULL; score=0; } Collegestu(char*name1,intid1,char*subject1,doublescore1): Person(name1,id1) { subject=newchar[strlen(subject1)+1]; strcpy(subject,subject1); score=score1; } ~Collegestu() { delete[]subject; } voidDisplay() { Person: : Display(); cout<<"Subject: "< cout<<"C++Score: "< } }; intmain() { charname[81],subject[81]; intid; doublescore; cin>>name>>id>>subject>>score; Collegestucs(name,id,subject,score); (); return0; } 1218: 继承与派生3 Description Person类派生大学生CollegeStu类 (2)。 设计一个Person类,其属性包括姓名name和身份证号id,其中name为指针类型,id为整型,编写成员函数: 构造函数Person、Display函数(显示数据成员信息)和析构函数;由Person类派生出大学生类CollegeStu,其属性有专业subject(指针类型),C++程序设计课程成绩score(double型),编写构造函数(实现数据初始化)、输出函数Display(只输出subject,score)。 main的代码如下: (不允许改动) intmain() { charname[81],subject[81]; intid; doublescore; cin>>name>>id>>subject>>score;//输入学生的姓名、id号、专业、成绩 CollegeStucs(name,id,subject,score); : : Display();//输出姓名,id ();//输出专业、成绩 return0; } Input Output SampleInput Lixu5Software SampleOutput Name: Lixu ID: 5 Subject: Software C++Score: ************************************************************************** #include #include usingnamespacestd; classPerson { private: char*name; intid; public: Person() { name=NULL; id=0; } Person(char*name1,intid1) { name=newchar[strlen(name1)+1]; strcpy(name,name1); id=id1; } ~Person() { delete[]name; } voidDisplay() { cout<<"Name: "< cout<<"ID: "< } }; classCollegeStu: publicPerson { private: char*subject; doublescore; public: CollegeStu() { subject=NULL; score=0; } CollegeStu(char*name1,intid1,char*subject1,doublescore1): Person(name1,id1) { subject=newchar[strlen(subject1)+1]; strcpy(subject,subject1); score=score1; } ~CollegeStu() { delete[]subject; } voidDisplay() { cout<<"Subject: "< cout<<"C++Score: "< } }; intmain() { charname[81],subject[81]; intid; doublescore; cin>>name>>id>>subject>>score;//输入学生的姓名、id号、专业、成绩 CollegeStucs(name,id,subject,score); : : Display();//输出姓名,id ();//输出专业、成绩 return0; } 1219: 继承与派生4 Description 已知Base为基类,派生出Derived类,两个类的定义及main的代码如下(不允许改动),请完成Base类和Derived类的构造函数和析构函数,能够根据输入获取相应的输出。 classBase { private: intb; public: Base(int); ~Base(); }; classDerived: publicBase { private: intd; public: Derived(int,int); ~Derived(); }; intmain() { inta,b; cin>>a>>b; Deriveddr(a,b); return0; } Input Output SampleInput 13 SampleOutput Base1sayshello Derived3sayshi Derived3saysbye Base1saysgoodbye ************************************************************************** #include usingnamespacestd; classBase { private: intb; public: Base(intc) { b=c; cout<<"Base"< } ~Base() { cout<<"Base"< } }; classDerived: publicBase { private: intd; public: Derived(intc,intb): Base(c) { d=b; cout<<"Derived"< } ~Derived() { cout<<"Derived"< } }; intmain() { inta,b; cin>>a>>b; Deriveddr(a,b); return0; } 1220: 继承与派生5 Description 由Array类派生出有序数组SortArray类,SortArray类中实现有序数组的插入。 已知Array类的定义如下(不允许增加成员函数): classArray { public: Array();//构造函数,初始化为空数组(length置为0) intLength();//获取数组的实际长度 doubleGet(intpos);//获取data中下标为pos的元素的值 voidInsert(intpos,doublex);//在下标pos处插入x voidDisplay();//输出线性表 private: doubledata[MaxSize];//存储元素(MaxSize为常量) intlength;//数组的实际长度 }; SortArray类定义如下(不允许增加成员函数): classSortArray: privateArray { public: SortArray(); intLength();//获取数组的实际长度 doubleGet(intpos);//获取data中下标为pos的元素的值 voidDisplay();//输出线性表 voidInsert(doublex);//递增有序数组中插入x,使序列仍有序 }; 请实现Array类和SortArray类的成员函数,main中输入若干个实数,以0结束,利用SortArray类中的Insert函数将它们插入data中,得到有序序列,再利用Display函数输出有序序列。 代码如下(不允许修改): intmain() { SortArraysa; doublenum; while (1) { cin>>num; if(fabs(num)<=1e-6)break; try { (num);// } catch(char*message) { cout< } } (); return0; } Input Output SampleInput 0 SampleOutput Thelength: 7 Theelements: ************************************************************************** #include #include usingnamespacestd; constintMaxSize=100;//顺序表的最大长度 classArray { public: Array();//构造函数,初始化为空数组(length置为0) intLength();//获取顺序表实际长度 doubleGet(intpos);//获取下标为pos的元素的值 voidInsert(intpos,doublex);//在下标pos处插入x voidDisplay();//输出线性表 private: doubledata[MaxSize];//存储元素 intlength;//数组的实际长度 }; Array: : Array() {length=0;} intArray: : Length() {returnlength;} doubleArray: : Get(intpos) { if(pos<0||pos>length-1)//下标不合法 throw"Illegalposition"; returndata[pos]; } voidArray: : Insert(intpos,doublex)//在下标pos处插入x { inti; if(length>=MaxSize)//表满不能插入 throw"Overflow"; if(pos<0||pos>length)//下标不合法 throw"Illegalposition"; for(i=length-1;i>=pos;i--)//将下标大于等于pos的元素后移 data[i+1]=data[i]; data[pos]=x;//在下标pos处插入元素x length++;//线性表长度增1 } voidArray: : Display()//输出线性表 { inti; cout<<"Thelength: "< cout<<"Theelements: "; for(i=0;i cout< cout< } //classSortArray classSortArray: privateArray { public: SortArray(); intLength(); doubleGet(intpos); voidDisplay(); voidInsert(doublex);//递增有序数组中插入x,使序列仍有序 }; SortArray: : SortArray(): Array(){} intSortArray: : Length() {returnArray: : Length();} doubleSortArray: : Get(intpos) {returnArray: : Get(pos);} voidSortArray: : Display() {Array: : Display();} voidSortArray: : Insert(doublex)//insert { inti; if(Length()>=MaxSize)throw"Overflow"; for(i=0;i if(Get(i)>x) break; Array: : Insert(i,x); } intmain() { SortArraysa; doublenum; while (1) { cin>>num; if(fabs(num)<=1e-6)break; try { (num);// } catch(char*message) { cout< } } (); return0; } 1221: 继承与派生6 Description 已知Array类的定义如下(不允许增加成员函数): classArray { public: Array(intsize); //构造函数,初始化数据成员(为data分配内存,MaxSize置为size,length置为0) intLength();//获取顺序表实际长度 doubleGet(intpos);//获取下标为pos的元素的值 voidInsert(intpos,doublex);//在下标pos处插入x voidDisplay();//输出线性表 private: double*data;//存储元素 intMaxSize; intlength;//数组的实际长度 }; SortArray类定义如下(不允许增加其它成员函数): classSortArray: privateArray { public: SortArray(intsize); intLength();//获取顺序表实际长度 doubleGet(intpos);//获取下标为pos的元素的值 voidDisplay();//输出线性表 voidInsert(doublex);//递增有序数组中插入x,使序列仍有序 }; main中的代码如下(不允许改动): intmain() { intsize; cin>>size; SortArraysa(size); doublenum; while (1) { cin>>num; if(fabs(num)<=1e-6)break; try { (num); } catch(char*wrong) { cout< } } (); return0; } 请实现Array类和SortArray类的成员函数。 Input Output Sample
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 继承 派生 参考 代码