A. 圆和圆柱体计算(继承)
定义一个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
#include<iostream> #include <cstring> using namespace std; class Cpoint { protected: int x, y; public: Cpoint(int xx, int yy) :x(xx), y(yy) { } }; class Ccircle :public Cpoint { protected: int r; public: float Area() { return 3.14 * r * r; } //注意子类构造语法 Ccircle(int xx, int yy, int rr) :Cpoint(xx, yy), r(rr) { } void print() { cout << "Circle:(" << x << "," << y << ")," << r << endl; cout << "Area:" << Area() << endl; } }; class CCylinder :public Ccircle { protected: int h; public: float volume() { return 3.14 * r * r * h; } CCylinder(int xx, int yy, int rr, int hh) :Ccircle(xx, yy, rr), h(hh) { } void print() { cout << "Cylinder:(" << x << "," << y << ")," << r << "," << h << endl; cout << "Volume:" << volume() << endl; } }; int main() { int x, y, r, h; cin >> x >> y >> r; Ccircle c1(x, y, r); c1.print(); cin >> x >> y >> r >> h; CCylinder c2(x, y, r, h); c2.print(); }
B. 三维空间的点(继承)