预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
ProblemA:C++习题抽象基类
Description
编写一个程序,声明抽象基类Shape,由它派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积(结果保留两位小数),3个图形的数据在定义对象时给定。
Input
圆的半径矩形的边长三角形的底与高
Output
圆的面积矩形的面积三角形的面积
SampleInput
12.6
4.58.4
4.58.4
SampleOutput
areaofcircle=498.76
areaofrectangle=37.80
areaoftriangle=18.90
#include<iostream>
#include<iomanip>
usingnamespacestd;
classShape
{
public:
virtualdoublearea()const=0;
};
classCircle:publicShape
{
public:
Circle(doubler):radius(r){}
virtualdoublearea()const
{
return3.14159*radius*radius;
};
protected:
doubleradius;
};
classRectangle:publicShape
{
public:
Rectangle(doublew,doubleh):width(w),height(h){}
virtualdoublearea()const
{
returnwidth*height;
}
protected:
doublewidth,height;
};
classTriangle:publicShape
{
public:
Triangle(doublew,doubleh):width(w),height(h){}
virtualdoublearea()const
{
return0.5*width*height;
}
protected:
doublewidth,height;
};
voidprintArea(constShape&s)
{
cout<<s.area()<<endl;
}
intmain()
{
floatr,a,b,w,h;
cout<<fixed<<setprecision(2);
cin>>r;
Circlecircle(r);
cout<<"areaofcircle=";
printArea(circle);
cin>>a>>b;
Rectanglerectangle(a,b);
cout<<"areaofrectangle=";
printArea(rectangle);
cin>>w>>h;
Triangletriangle(w,h);
cout<<"areaoftriangle=";
printArea(triangle);
return0;
}
ProblemB:C++习题虚函数-计算图形面积
Description
编写一个程序,定义抽象基类Shape,由它派生出5个派生类:Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。
用虚函数分别计算几种图形面积,并求它们之和。
要求用基类指针数组,使它每一个元素指向一个派生类对象。
Input
圆的半径
正方形的边长
矩形的边长
梯形的上底和下底,高
三角形的底与高
Output
所有图形面积之和(结果保留两位小数)
SampleInput
12.6
3.5
4.58.4
2.04.53.2
4.58.4
SampleOutput
totalofallareas=574.11
#include<iostream>
#include<iomanip>
usingnamespacestd;
classShape
{
public:
virtualdoublearea()const=0;
};
classCircle:publicShape
{
public:
Circle(doubler):radius(r){}
virtualdoublearea()const
{
return3.14159*radius*radius;
};
protected:
doubleradius;
};
classSquare:publicShape
{
public:
Square(doubles):side(s){}
virtualdoublearea()const
{
returnside*side;
}
protected:
doubleside;
};
classRectangle:pu