题目描述
定义一个CPoint点类,包含数据成员x,y(坐标点)。
以CPoint为基类,派生出一个圆形类CCircle,增加数据成员r(半径)和一个计算圆面积的成员函数。
再以CCircle做为直接基类,派生出一个圆柱体类CCylinder,增加数据成员h(高)和一个计算体积的成员函数。
生成圆和圆柱体对象,调用成员函数计算面积或体积并输出结果。
输入
输入圆的圆心位置、半径
输入圆柱体圆心位置、半径、高
输出
输出圆的圆心位置 半径
输出圆面积
输出圆柱体的圆心位置 半径 高
输出圆柱体体积
输入样例1
0 0 1 1 1 2 3
输出样例1
Circle:(0,0),1 Area:3.14 Cylinder:(1,1),2,3 Volume:37.68
题目分析
好像没什么好说的,考查继承的简单应用,下期博客讲继承。
AC代码
代码语言:javascript复制#include"iostream"
using namespace std;
class CPoint
{
protected:
int x,y;
public:
void getpoint()
{
cin>>x>>y;
}
};
class CCircle:public CPoint
{
protected:
int r;
public:
void getr()
{
cin>>r;
}
void area()
{
cout<<"Circle:("<<x<<','<<y<<')'<<','<<r<<endl<<"Area:"<<3.14*r*r<<endl;
}
};
class CCylinder:public CCircle
{
protected:
int h;
public:
void geth()
{
cin>>h;
}
void volume()
{
cout<<"Cylinder:("<<x<<','<<y<<')'<<','<<r<<','<<h<<endl<<"Volume:"<<3.14*r*r*h<<endl;
}
};
int main()
{
CCircle circle;
CCylinder cylinder;
circle.getpoint();
circle.getr();
circle.area();
cylinder.getpoint();
cylinder.getr();
cylinder.geth();
cylinder.volume();
}