C++练习题
用继承表示点-圆-圆柱的关系
思路:分析点,圆,圆柱所具有的属性,并且确定基类和派生类,确定好派生类在基类上所增加的属性和方法
一下是代码
//继承表示点->圆柱->圆柱的关系
#include<iostream>
using namespace std;
constexpr auto PI = 3.14;
class Dot //点具有坐标属性
{
public:
Dot():d_x(0),d_y(0) {}
Dot(double x, double y):d_x(x), d_y(y) {}
void SetX();
void SetY();
double GetX();
double GetY();
private:
int d_x;
int d_y;
};
void Dot::SetX() {
double x;
cout << "请输入上底面圆心的X坐标:" << endl;
cin >> x;
d_x = x; }
void Dot::SetY() {
double y;
cout << "请输入上底面圆心的Y坐标:" << endl;
cin >> y;
d_y = y; }
double Dot::GetX() { return d_x; }
double Dot::GetY() { return d_y; }
class Circle :public Dot //圆有圆心和半径、周长、面积
{
public:
Circle():c_r(1),c_c(6.28),c_s(3.14){}
//Circle(double x, double y, double r) :Dot(x, y) { c_r = r; }
void SetR();
double GetR();
double GetArea();
double GetC();
private:
double c_r;
double c_c;
double c_s;
};
void Circle::SetR() {
double r;
cout << "请输入上底面圆的半径:" << endl;
cin >> r;
c_r = r; }
double Circle::GetR() { return c_r; }
double Circle::GetArea() { return c_s = PI * c_r * c_r; }
double Circle::GetC() { return c_c = 2 * PI * c_r; }
class Cylinder :public Circle //圆柱有上底面、高、表面积、体积
{
public:
Cylinder():c_h(1),c_s(12.56),c_v(3.14){}
//Zhu(double x, double y, double r, double h) :Circle(x, y, r) { z_h = h; }
void SetH();
double GetH();
double GetS(Cylinder);
double GetV(Cylinder);
private:
double c_h;
double c_v;
double c_s;
};
void Cylinder::SetH() {
double h;
cout << "请输入圆柱的高:" << endl;
cin >> h;
c_h = h; }
double Cylinder::GetH() { return c_h; }
double Cylinder::GetS(Cylinder z)
{
z.c_s = 2 * z.GetArea()+ z.GetC() * c_h;
return z.c_s;
}
double Cylinder::GetV(Cylinder z)
{
z.c_v = z.GetArea()* c_h;
return z.c_v;
}
int main()
{
Cylinder z;
z.SetX();
z.SetY();
z.SetR();
z.SetH();
cout << "圆柱的上底面圆心:("<<z.GetX()<<','<<z.GetY()<<')'<<endl;
cout << "圆柱的上底面半径:"<<z.GetR()<<endl;
cout << "圆柱的高:"<<z.GetH()<<endl;
cout << "圆柱的上底面周长:"<<z.GetC()<<endl;
cout << "圆柱的上底面积:"<<z.GetArea()<<endl;
cout << "圆柱的表面积:" << z.GetS(z) << endl;
cout << "圆柱的体积:" << z.GetV(z) << endl;
return 0;
}
采用了多继承关系
圆继承于点,圆柱继承于圆
大一小白,坚持练习,代码还很笨重,希望各路大神多多指点