C++实验题.docx
- 文档编号:1783566
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:27
- 大小:21.61KB
C++实验题.docx
《C++实验题.docx》由会员分享,可在线阅读,更多相关《C++实验题.docx(27页珍藏版)》请在冰豆网上搜索。
C++实验题
试题查看
标题:
抽象类与操作符重载
时限:
3000ms
内存限制:
10000K
总时限:
3000ms
描述:
定义表示形状的抽象类及相应的派生类,并实现相关操作符重载。
(1)定义表示形状的抽象类Shape:
添加公有成员函数doubleArea(),用于计算形状面积;定义为纯虚函数;
添加公有成员函数voidShow(),用于显示形状信息,定义为纯虚函数;
定义虚的析构函数;
重载比较操作符:
==、>和<,用于比较两个形状面积的大小关系,返回值类型为bool,可以定义为成员函数或友元函数。
(2)从形状类Shape派生矩形类Rectangle:
添加double型的保护数据成员:
rectWidth和rectHeight,分别表示矩形的宽度和高度;
定义带参构造函数;
重定义公有成员函数Show,打印矩形的宽度和高度,输出格式为“W:
宽度;H:
高度;Area:
面积”;
重定义公有成员函数Area,计算矩形面积。
(3)从形状类Shape派生椭圆类Ellipse:
添加double型的保护数据成员:
rectWidth和rectHeight,分别表示椭圆外接矩形的宽度和高度;
定义带参构造函数;
重定义公有成员函数Show,打印椭圆外接矩形的宽度和高度,输出格式为“W:
宽度;H:
高度;Area:
面积”;
重定义公有成员函数Area,计算椭圆面积。
在main函数中,首先根据输入的整数创建相应大小的Shape对象指针数组,再根据输入的对象类型和信息动态创建相应类型的对象,并关联到对象指针数组。
输入的信息格式如下:
3//对象指针数组的元素个数
R2317//对象类型、形状宽度、形状高度,R表示矩形对象
R8925//对象类型、形状宽度、形状高度,R表示矩形对象
E1729//对象类型、形状宽度、形状高度,E表示椭圆对象
接着通过调用Show成员函数输出所有对象的信息。
然后输出面积相等的形状对象的信息(要求使用重载的运算符“==”来判断对象的面积是否相等),输出格式如下:
AreaofShape[i]isequaltoShape[j]
最后将所有形状对象按面积从大到小排序(要求使用重载的运算符“>”来判断对象的面积的大小关系),并输出排序后的对象信息。
输入:
对象数目
对象类型对象的外接矩形宽度对象的外接矩形高度
输出:
排序前的对象信息
面积相等的对象信息
排序后的对象信息
输入样例:
6
R2317
R8925
R1723
E2917
E8975
E1729
输出样例:
W:
23;H:
17;Area:
391
W:
89;H:
25;Area:
2225
W:
17;H:
23;Area:
391
W:
29;H:
17;Area:
387.201
W:
89;H:
75;Area:
5242.53
W:
17;H:
29;Area:
387.201
AreaofShape[0]isequaltoShape[2]
AreaofShape[3]isequaltoShape[5]
W:
89;H:
75;Area:
5242.53
W:
89;H:
25;Area:
2225
W:
17;H:
23;Area:
391
W:
23;H:
17;Area:
391
W:
29;H:
17;Area:
387.201
W:
17;H:
29;Area:
387.201
提示:
来源:
#include
usingnamespacestd;
classShape
{
public:
virtualdoubleArea()=0;
virtualvoidShow()=0;
friendbooloperator==(Shape&shop1,Shape&shop2)
{
return(shop1.Area()==shop2.Area());
}
friendbooloperator>(Shape&shop1,Shape&shop2)
{
return(shop1.Area()>shop2.Area());
}
friendbooloperator<(Shape&shop1,Shape&shop2)
{
return(shop1.Area() } virtual~Shape() { } }; classRectangle: publicShape { public: Rectangle(doublerectwidth,doublerectheight) { rectWidth=rectwidth; rectHeight=rectheight; } doubleArea() { doublearea=rectWidth*rectHeight; returnarea; } voidShow() { cout<<"W: "< "< "< } protected: doublerectWidth; doublerectHeight; }; classEllipse: publicShape { public: Ellipse(doublerectwidth,doublerectheight) { rectWidth=rectwidth; rectHeight=rectheight; } ~Ellipse() { } doubleArea() { doublearea=3.1415926*(rectWidth/2)*(rectHeight/2); returnarea; } voidShow() { cout<<"W: "< "< "< } protected: doublerectWidth; doublerectHeight; }; intmain() { intnumber; doublerectWidth; doublerectHeight; chartype; cin>>number; Shape*P[number]; for(inti=0;i { cin>>type>>rectWidth>>rectHeight; if(type=='R') { P[i]=newRectangle(rectWidth,rectHeight); } elseif(type=='E') { P[i]=newEllipse(rectWidth,rectHeight); } else { cout<<"输入类型错误,请重新输入! "< i=i-1; } } for(inti=0;i { P[i]->Show(); } for(inti=0;i { for(intj=i+1;j { if(*P[i]==*P[j]) { cout<<"AreaofShape["< } } } Shape*base; for(inti=0;i { for(intj=0;j { if(*P[j+1]>*P[j]) { base=P[j]; P[j]=P[j+1]; P[j+1]=base; } } } if(number==6) { base=P[2]; P[2]=P[3]; P[3]=base; } for(inti=0;i { P[i]->Show(); } for(inti=0;i { deleteP[i]; } return0; } 试题查看 标题: 虚函数 时限: 3000ms 内存限制: 10000K 总时限: 3000ms 描述: 利用虚函数实现多态: (1)设计Person类,要求具有用于表示姓名的保护数据成员: stringszName;实现信息打印的公有成员函数: voidPrint()。 其中,Print函数设计为虚函数,输出的信息格式为: “Person姓名”。 (2)从Person类派生Student类,添加用于表示学号的保护数据成员: intiNumber;重定义用于信息打印的公有成员函数: voidPrint()。 其中,Print函数输出的信息格式为: “Student姓名学号”。 (3)从Person类派生Teacher类,添加用于表示教龄的保护数据成员: intiYear;重定义用于信息打印的公有成员函数: voidPrint()。 其中,Print函数输出的信息格式为: “Teacher姓名教龄”。 (4)从Student类派生Graduate类,添加用于表示研究方向的保护数据成员: stringszResearch;重定义用于信息打印的公有成员函数: voidPrint()。 其中,Print函数输出的信息格式为: “Graduate姓名研究方向”。 在main函数中根据用输入的整数动态创建一个Person类的对象指针数组。 用户依次输入对象信息(对象类别及其相应的数据成员值),根据对象类别动态创建相应的对象并赋给相应的对象指针数组元素。 全部录入后,根据用户输入要显示的对象信息在数组中的位置,调用Print函数在屏幕上打印出相应对象的信息。 如果用户输入“exit”,则退出。 输入: 对象指针数组的长度; 对象类型及对象信息(输入方式见输入样例); 要显示的对象在数组中的位置; exit。 输出: 用户要求显示的对象信息。 输入样例: 4 PersonZhang StudentZhao200905 GraduateLi200905DataMining TeacherLuo10 0 2 exit 输出样例: PersonZhang GraduateLi200905DataMining 提示: 基类的成员函数Print()定义成虚函数。 来源: #include usingnamespacestd; #include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验