1.编写一个程序计算出圆和圆柱体的表面积和体积。 要求: 1)定义一个点(point)类,包含数据成员x,y(坐标点),以它为基类,派生出一个circle类(圆类), 增加数据成员r(半径),再以circle作为直接基类,派生出一个cylinder(圆柱体)类,再增加数据成员h(高)。 合理设置类中数据成员的访问属性。 2)派生类圆、圆柱均提供求表面积和体积的成员函数和输出函数。 3)定义主函数,求圆、圆柱的面积和体积。
时间: 2024-02-29 13:51:40 浏览: 26
好的,这是一个比较典型的面向对象的编程题目。以下是代码实现:
```c++
#include <iostream>
using namespace std;
//定义点类
class Point{
public:
Point(double x, double y){
this->x = x;
this->y = y;
}
double getX() const{
return x;
}
double getY() const{
return y;
}
private:
double x;
double y;
};
//定义圆类
class Circle : public Point{
public:
Circle(double x, double y, double r) : Point(x, y){
this->r = r;
}
double getR() const{
return r;
}
double getArea() const{
return 3.14 * r * r;
}
double getPerimeter() const{
return 2 * 3.14 * r;
}
private:
double r;
};
//定义圆柱体类
class Cylinder : public Circle{
public:
Cylinder(double x, double y, double r, double h) : Circle(x, y, r){
this->h = h;
}
double getH() const{
return h;
}
double getVolume() const{
return getArea() * h;
}
double getSurfaceArea() const{
return getPerimeter() * (r + h) + 2 * getArea();
}
private:
double h;
};
int main(){
Circle c(0, 0, 5);
Cylinder cy(0, 0, 5, 10);
cout << "圆的面积是:" << c.getArea() << endl;
cout << "圆的周长是:" << c.getPerimeter() << endl;
cout << "圆柱的体积是:" << cy.getVolume() << endl;
cout << "圆柱的表面积是:" << cy.getSurfaceArea() << endl;
return 0;
}
```
我们首先定义了一个点类,然后在此基础上派生出了圆类和圆柱体类。在这里,我们使用了继承和封装的思想,将共同的属性和方法放在父类中,子类继承父类的同时也拥有了父类的属性和方法。在主函数中,我们创建了一个圆对象和一个圆柱体对象,并分别调用它们的方法来计算表面积和体积。