面向对象程序设计练习题(题型分类版·适配word) (1)

更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
使用虚函数编写程序,求球体和圆柱体的体积和表面积。要求:定义基类Shape,包含体积和表面积的虚函数;球类Sphere和圆柱体类Column继承Shape,重写虚函数完成计算和输出。 参考代码: cpp #include<iostream> #include<cmath> using namespace std; const double PI = 3.14159; //基类:形状 class Shape { public: //纯虚函数:体积 virtual double getVolume() const = 0; //纯虚函数:表面积 virtual double getSurfaceArea() const = 0; //虚析构函数 virtual ~Shape() {} }; //球类(继承Shape) class Sphere : public Shape { private: double radius; //半径 public: Sphere(double r = 0) : radius(r) {} //重写:体积(球体体积公式:$$\frac{4}{3}\pi r^3$$) double getVolume() const override { return (4.0 / 3) * PI * pow(radius, 3); } //重写:表面积(球体表面积公式:$$4\pi r^2$$) double getSurfaceArea() const override { return 4 * PI * pow(radius, 2); } }; //圆柱体类(继承Shape) class Column : public Shape { private: double radius; //底面半径 double height; //高 public: Column(double r = 0, double h = 0) : radius(r), height(h) {} //重写:体积(圆柱体体积公式:$$\pi r^2 h$$) double getVolume() const override { return PI * pow(radius, 2) * height; } //重写:表面积(圆柱体表面积公式:$$2\pi r^2 + 2\pi rh$$) double getSurfaceArea() const override { return 2 * PI * pow(radius, 2) + 2 * PI * radius * height; } }; //测试函数:多态调用 void testShape(const Shape& shape) { cout << "体积:" << shape.getVolume() << endl; cout << "表面积:" << shape.getSurfaceArea() << endl; } //测试代码 int main() { Sphere s(5); Column c(3, 4); cout << "球体参数:" << endl; testShape(s); cout << "\n圆柱体参数:" << endl; testShape(c); return 0; }
1 2