当前位置: 首页 > news >正文

c++图形题练习程序

一.练习题背景

这题是作者再一家公司实习的时候,实习期间的一个考核题目,感觉还是比较有价值的。希望能给还在努力的学弟学妹们一些启发。

题目大致就是要求用继承和多态来实现圆、三角形和长方形的面积和周长求解。这步的大致思路是这样的,你需要将整体的图形类抽象出来,提取出它们共有的一些特性。比如说都是计算周长和面积,那这部分就再父类抽象出来,子类复现就行。

二.程序展示

以下是一个基于 C++ 的几何图形类练习程序,实现了形状基类及其派生类(圆、三角形、长方形),并计算不同形状的面积和与周长和:

#include <iostream>
#include <cmath> // 用于三角形面积计算(海伦公式)
using namespace std;
#define M_PI 3.14// 形状基类
class Shape {
public:// 纯虚函数:计算面积和周长(基类不实现,由派生类重写)virtual double area() const = 0;virtual double perimeter() const = 0;// 虚函数:输出形状信息(派生类可重写)virtual void print() const = 0;
};// 圆类(派生自Shape)
class Circle : public Shape {
private:double radius; // 半径
public:// 构造函数Circle(double r) : radius(r) {}// 计算面积:πr²double area() const override {return M_PI * radius * radius;}// 计算周长:2πrdouble perimeter() const override {return 2 * M_PI * radius;}// 输出圆的信息void print() const override {cout << "圆:半径=" << radius<< ",面积=" << area()<< ",周长=" << perimeter() << endl;}
};// 长方形类(派生自Shape)
class Rectangle : public Shape {
private:double length;  // 长double width;   // 宽
public:// 构造函数Rectangle(double l, double w) : length(l), width(w) {}// 计算面积:长×宽double area() const override {return length * width;}// 计算周长:2×(长+宽)double perimeter() const override {return 2 * (length + width);}// 输出长方形信息void print() const override {cout << "长方形:长=" << length << ",宽=" << width<< ",面积=" << area()<< ",周长=" << perimeter() << endl;}
};// 三角形类(派生自Shape)
class Triangle : public Shape {
private:double a, b, c; // 三边长
public:// 构造函数(简单判断三角形合法性)Triangle(double x, double y, double z) : a(x), b(y), c(z) {if (a + b <= c || a + c <= b || b + c <= a) {cout << "警告:三边无法构成三角形!" << endl;}}// 计算面积(海伦公式)double area() const override {double s = (a + b + c) / 2; // 半周长return sqrt(s * (s - a) * (s - b) * (s - c));}// 计算周长:三边之和double perimeter() const override {return a + b + c;}// 输出三角形信息void print() const override {cout << "三角形:三边长=" << a << "," << b << "," << c<< ",面积=" << area()<< ",周长=" << perimeter() << endl;}
};int main() {// 定义三个不同派生类对象(示例数据)Shape* shape1 = new Circle(5.0);       // 半径为5的圆Shape* shape2 = new Rectangle(4.0, 6.0); // 长4、宽6的长方形Shape* shape3 = new Triangle(3.0, 4.0, 5.0); // 直角三角形(3,4,5)// 输出各形状信息cout << "各形状信息:" << endl;shape1->print();shape2->print();shape3->print();// 计算面积之和与周长之和double totalArea = shape1->area() + shape2->area() + shape3->area();double totalPerimeter = shape1->perimeter() + shape2->perimeter() + shape3->perimeter();// 输出总和cout << "\n面积之和:" << totalArea << endl;cout << "周长之和:" << totalPerimeter << endl;// 释放动态内存delete shape1;delete shape2;delete shape3;return 0;
}

文章转载自:
http://argentate.riewr.cn
http://cern.riewr.cn
http://antimasque.riewr.cn
http://barefooted.riewr.cn
http://atony.riewr.cn
http://caller.riewr.cn
http://binuclear.riewr.cn
http://adynamic.riewr.cn
http://anend.riewr.cn
http://brittle.riewr.cn
http://bloc.riewr.cn
http://allometry.riewr.cn
http://chromatophore.riewr.cn
http://azobenzene.riewr.cn
http://administration.riewr.cn
http://carcinoma.riewr.cn
http://amberjack.riewr.cn
http://angelnoble.riewr.cn
http://campy.riewr.cn
http://bechuanaland.riewr.cn
http://batch.riewr.cn
http://autotransformer.riewr.cn
http://barkhan.riewr.cn
http://allusion.riewr.cn
http://bowsprit.riewr.cn
http://bibulous.riewr.cn
http://bullnecked.riewr.cn
http://arbitrament.riewr.cn
http://armor.riewr.cn
http://aristocracy.riewr.cn
http://www.dtcms.com/a/280230.html

相关文章:

  • 【工程篇】07:如何打包conda环境并拷贝到另一台服务器上
  • HAProxy双机热备,轻松实现负载均衡
  • 【开源】一款基于 .NET 和 Vue3 开源(Apache)的MES管理系统,您的新一代工厂管理助手!
  • 昆仑通态触摸屏脚本编程通讯设置和调试
  • 【亲测有效】ubuntu20.04服务器新建用户+vnc配置教程
  • Racknerd服务器Ubuntu
  • Ant Design预览多张图
  • AR眼镜颠覆医疗:精准手术零误差
  • HTML--教程
  • K-12教育创业新蓝图:告别“刷题”,拥抱“千人千面”个性化学习
  • 物联网设备管理工具实战:用AR运维镜击穿6.8天修复魔咒
  • Bootstrap-HTML(七)Bootstrap在线图标的引用方法
  • 【zynq7020】PS的“Hello World”
  • RHCE认证-Linux 运维知识整合:从基础到进阶的学习路径
  • ESP32S3+VSCode+PlatformIO+Arduino+Freertos开发入门指南:基于Arduino框架的应用开发全流程
  • 多维视角下的可组合性:PTBs 与 EIP-7702 的对比与解析
  • 简单明了的对比PyTorch与TensorFlow
  • 操作系统笔记:进程调度(Process Scheduling)
  • 硬件与软件的桥梁:冯诺依曼体系、操作系统和初始进程的深度解析
  • 排序算法实战(上)
  • 串口通信性能优化
  • 人形机器人:技术落地、场景适配与产业演进
  • 卫星通信链路预算之六:输出回退
  • [RPA] 多页订单的自动处理
  • 高并发四种IO模型的底层原理
  • 【Rust Web】Axum :构建高性能 Web 服务
  • 快速精准估算光伏电站造价:效率与精度的关键
  • 4.增-demo
  • Java全栈工程师面试实录:从电商支付到AI大模型的应用场景与技术栈解析
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | DoubleClickHeart(双击爱心)