用c++定义一个圆柱体类Cylinder,类内数据成员有radius(圆柱体底面半径)、height(圆柱体高度),成员函数有构造函数、surface和volume。surface函数实现计算圆柱体的表面积,volume实现计算圆柱体的体积。在main函数中定义Cylinder类的对象c,并调用surface函数计算对象c的表面积,调用volume计算对象c的体积。
时间: 2023-08-21 16:02:37 浏览: 118
好的,这里是实现代码:
```c++
#include <iostream>
using namespace std;
class Cylinder {
private:
double radius;
double height;
public:
Cylinder(double r, double h) {
radius = r;
height = h;
}
double surface() {
return 2 * 3.14 * radius * (radius + height);
}
double volume() {
return 3.14 * radius * radius * height;
}
};
int main() {
Cylinder c(5, 10);
cout << "The surface area of cylinder is: " << c.surface() << endl;
cout << "The volume of cylinder is: " << c.volume() << endl;
return 0;
}
```
运行结果:
```
The surface area of cylinder is: 471
The volume of cylinder is: 785
```
相关问题
用面向对象方法编写求5个圆柱体的体积和表面积的C++程序。数据成员包括底面半径radius、柱体高height。要求用成员函数实现以下功能: (1)由键盘分别输入5个圆柱体的半径、高; (2)计算圆柱体的体积和表面积; (3)输出5个圆柱体的体积和表面积;
以下是参考代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Cylinder {
private:
double radius;
double height;
public:
void setRadius(double r) {
radius = r;
}
void setHeight(double h) {
height = h;
}
double getVolume() {
return M_PI * pow(radius, 2) * height;
}
double getSurfaceArea() {
return 2 * M_PI * radius * (radius + height);
}
};
int main() {
Cylinder cylinders[5];
double r, h;
for (int i = 0; i < 5; i++) {
cout << "Enter radius and height for cylinder " << i + 1 << ": ";
cin >> r >> h;
cylinders[i].setRadius(r);
cylinders[i].setHeight(h);
}
double totalVolume = 0, totalSurfaceArea = 0;
for (int i = 0; i < 5; i++) {
totalVolume += cylinders[i].getVolume();
totalSurfaceArea += cylinders[i].getSurfaceArea();
}
cout << "Total volume of cylinders: " << totalVolume << endl;
cout << "Total surface area of cylinders: " << totalSurfaceArea << endl;
return 0;
}
```
在这个程序中,我们定义了一个名为 `Cylinder` 的类,其中包含了圆柱体的半径和高作为私有数据成员。我们使用了 `setRadius` 和 `setHeight` 成员函数来设置半径和高。然后,我们使用 `getVolume` 和 `getSurfaceArea` 成员函数来计算圆柱体的体积和表面积。
在 `main` 函数中,我们首先从键盘输入进了 5 个圆柱体的半径和高,然后使用 `setRadius` 和 `setHeight` 函数来设置每个圆柱体的半径和高。接下来,我们遍历了每个圆柱体,将每个圆柱体的体积和表面积加入到总体积和总表面积中。最后,我们输出了所有圆柱体的总体积和总表面积。
2.先建立一个点类Point,包含数据成员x,y(坐标点)。以它为基类,派生出圆类Circle,增加数据成员radius(半径),再以Cirlcle类为直接基类,派生出圆柱体类Cylinder,再增加数据成员height(高)。要求: (1)每个类都有构造函数、用于从键盘获取数据的成员函数set(),用于显示数据的成员函数display(),Point的display()为虚函数。 (2)在虚函数输出各类对象信息。
好的,这是一个稍微有点复杂的面向对象编程的问题,我会根据你的要求来回答。
首先,我们需要定义一个Point类,包含数据成员x和y,以及构造函数、set()函数和虚函数display()。代码如下:
```C++
class Point {
protected:
int x;
int y;
public:
Point(int x = 0, int y = 0) {
this->x = x;
this->y = y;
}
virtual void display() {
cout << "点的坐标为:(" << x << "," << y << ")" << endl;
}
void set(int x, int y) {
this->x = x;
this->y = y;
}
};
```
然后,我们需要派生出一个Circle类,增加数据成员radius,并且重写父类的set()和display()函数。代码如下:
```C++
class Circle : public Point {
protected:
int radius;
public:
Circle(int x = 0, int y = 0, int radius = 0) : Point(x, y) {
this->radius = radius;
}
void display() {
cout << "圆心坐标为:(" << x << "," << y << ")" << endl;
cout << "圆的半径为:" << radius << endl;
}
void set(int x, int y, int radius) {
Point::set(x, y);
this->radius = radius;
}
};
```
最后,我们再以Circle类为直接基类,派生出一个Cylinder类,增加数据成员height,并且重写父类的set()和display()函数。代码如下:
```C++
class Cylinder : public Circle {
protected:
int height;
public:
Cylinder(int x = 0, int y = 0, int radius = 0, int height = 0) : Circle(x, y, radius) {
this->height = height;
}
void display() {
cout << "圆柱体的底面信息:" << endl;
Circle::display();
cout << "圆柱体的高为:" << height << endl;
}
void set(int x, int y, int radius, int height) {
Circle::set(x, y, radius);
this->height = height;
}
};
```
以上就是完整的代码实现了。通过这个例子,我们可以看出面向对象编程的一些特点,例如继承、多态等。在虚函数中输出各类对象信息可以更好地展示多态的作用。
阅读全文