如果说要用C++写一个简单的四则运算的程序,相信难不到人,这还不简单吗?然后用不了五分钟,三下五除二,就出了下面的代码,一调试,没问题。。。。。

 #include <iostream>
 using namespace std;
 int main()
 {
     double a = 0.0, b = 0.0;
     double result = 0.0;
     char oper;
     cout << "请输入两个数:" ;
     cin >> a >> b;
     cout << "请输入运算符:";
     cin >> oper;
     switch (oper)
     {
     case '+':result = a + b; break;
     case '-':result = a - b; break;
     case '*':result = a * b; break;
     case '/':result = a / b; break;
     default:
         cout << "没有此运算符" << endl;
         break;
     }
     cout << "运算结果是: " << result << endl;
     system("pause");
     ;
 }

的确,上面的代码没什么问题,相信细心的朋友都会在除法运算中加上一个对分母是否为零的判断。。。

那么,问题来了,如果程序都成了这个样子,那C++和其它语言有什么区别呢?如此强大的C++,让一个四则算法简单成这样子,还真对不起它的灵活性与复杂性。

如此说来,是不是应该让程序看上去更加的复杂才有意思呢?当然,说的是看上去复杂。。。。。

既然要复杂点,就还弄一个类出来好了。

#ifndef MYCALC_H_
#define MYCALC_H_

class MyCalc
{
public:
    /*
     * 返回值:运算结果
     * 参数:  操作符
    */
    double getResult(const char& oper);

    /*
     * 函数作用:返回运算数A
    */
    double getNumberA() const;

    /*
    * 函数作用:返回运算数B
    */
    double getNumberB() const;

    /*
    * 函数作用:设置运算数A的值
    */
    void setNumberA(const double& a);

    /*
    * 函数作用:设置运算数B的值
    */
    void setNumberB(const double& b);
    MyCalc();
    MyCalc(double a, double b) :m_numA(a), m_numB(b){}    //// 初始化列表,初始化两数
    virtual ~MyCalc();
private:
    double m_numA;    //// 运算数A
    double m_numB;    //// 运算数B
};

#endif

myCalc.h

既然类已经出来了,实现肯定是跑不掉的,所以继续下去

 #include "myCalc.h"
 #include <iostream>

 double MyCalc::getResult(const char& oper)
 {
     switch (oper)
     {
     case '+':
         return getNumberA() + getNumberB();
         break;
     case '-':
         return getNumberA() - getNumberB();
         break;
     case '*':
         return getNumberA() * getNumberB();
         break;
     case '/':
         if (0.0 == getNumberB())
         {
             std::cerr << "divsion by zero" << std::endl;
             ;
         }
         return getNumberA() / getNumberB();
         break;

     default:
         std::cerr << "There is no operator \'"  << oper << "\'" << std::endl;
         break;
     }
     ;
 }

 double MyCalc::getNumberA() const
 {
     return m_numA;
 }
 double MyCalc::getNumberB() const
 {
     return m_numB;
 }

 void MyCalc::setNumberA(const double& a)
 {
     m_numA = a;
 }

 void MyCalc::setNumberB(const double& b)
 {
     m_numB = b;
 }

 MyCalc::MyCalc()
 {
 }
 MyCalc::~MyCalc()
 {
 }

myCalc.cpp

好了,类已经写好,这样看上去是不是更加"高大上"呢?

任务完成了,那来试试这段代码吧

 #include <iostream>
 #include "myCalc.h"
 using namespace std;
 int main()
 {
     double numA = 0.0, numB = 0.0;
     ;
     cout << "Enter two numbers: ";
     cin >> numA >> numB;
     cout << endl;
     cout << "Enter an operator: ";
     cin >> oper;
     MyCalc myCalc(numA, numB);
     cout << "Result is: " << myCalc.getResult(oper) << endl;
     system("pause");
     ;
 }

mainCalc

程序到此为止,仅使用到了C++冰山一角的知识点,而且程序还有不少地方值得改善。欢迎大家交流。

C++ 四则运算简单设计的更多相关文章

  1. Java消息系统简单设计与实现

    前言:由于导师在我的毕设项目里加了消息系统(本来想水水就过的..),没办法...来稍微研究研究吧..简单简单... 需求分析 我的毕设是一个博客系统,类似于简书这样的,所以消息系统也类似,在用户的消息 ...

  2. 学生与部门管理app-产品功能与界面的简单设计

    学生与部门管理app-产品功能与界面的简单设计 1. 结对成员学号 我:********* 大佬:*******10 2. 需求分析(NABCD模型) 2.1 N-需求 各个部门在开学初占据学校青春广 ...

  3. C#网络编程TCP通信实例程序简单设计

    C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试 ...

  4. Java秒杀简单设计二:数据库表和Dao层设计

    Java秒杀简单设计二:数据库表Dao层设计 上一篇中搭建springboot项目环境和设计数据库表  https://www.cnblogs.com/taiguyiba/p/9791431.html ...

  5. SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 技术栈 : SpringBoot + shiro + jpa + freemark ,因为篇幅原因,这里只 ...

  6. 3.NetDh框架之缓存操作类和二次开发模式简单设计(附源码和示例代码)

    前言 NetDh框架适用于C/S.B/S的服务端框架,可用于项目开发和学习.目前包含以下四个模块 1.数据库操作层封装Dapper,支持多种数据库类型.多库实例,简单强大: 此部分具体说明可参考博客: ...

  7. LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法

    LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装置不需要额外提供电源.LC滤波器一般是由滤波电容器.电抗器和电阻器适当组合而成,与谐 ...

  8. 基于ARM处理器的反汇编器软件简单设计及实现

    写在前面 2012年写的毕业设计,仅供参考 反汇编的目的 缺乏某些必要的说明资料的情况下, 想获得某些软件系统的源代码.设计思想及理念, 以便复制, 改造.移植和发展: 从源码上对软件的可靠性和安全性 ...

  9. 四则运算GUI设计2.0

    使用QT设计的界面如下: 程序流程是点击开始出题,会在题目后面的框中显示所出的题目,在输入答案以后点击提交答案会判断输入的答案是否正确. 输入后的界面: 部分代码如下: qtyunsuan.h文件: ...

随机推荐

  1. &quot;undefined reference to&quot; 问题解决方法

    近期在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似以下这种错误: (.text+0x13): undefined reference to `func' 关于undef ...

  2. boost.asio源码剖析(二) ---- 架构浅析

    * 架构浅析 先来看一下asio的0层的组件图.                     (图1.0) io_object是I/O对象的集合,其中包含大家所熟悉的socket.deadline_tim ...

  3. MySQL mysqldump数据导出详解 --dump-slave 注意事项

    http://www.cnblogs.com/chenmh/p/5300370.html 介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工 ...

  4. mysql describe

    describe命令一.describe命令用于查看特定表的详细设计信息,例如为了查看guestbook表的设计信息,可用:describe guestbook describe ol_user us ...

  5. discuz(dz) SSO(单点,同歩,异步)登录 --转

    原文地址:http://fc-lamp.blog.163.com/blog/static/1745666872012762520123/ discuz(dz) SSO(单点,同歩,异步)登录  一般流 ...

  6. nmon的安装以及使用

    在做性能的时候都需要监控服务器的各项资源,这里使用的是nmon,小巧,而且比较好用,记录安装过程 在linux下创建nmon目录 方便放文件 mkdir /usr/local/nmon cd /usr ...

  7. css居中的几种方式

    居中分水平和垂直两种,使用的频度也算是很高,下面分情况来讨论一下几种常用的实现方式. 欢迎指正文中的错误,同时如果有学习到新的方式也会更新在后面,也方便以后温故知新. 1.margin 这种方式只能实 ...

  8. 使用keil建立标准STM32工程模版(图文详细版!)

    1.   模板工程的创建(超级详细版,使用的是keil 4.5版本) 1.1创建工程目录 良好的工程结构能让文件的管理更科学,让开发更容易更方便,希望大家养成良好的习惯,使用具有合理结构的工程目录,当 ...

  9. [Android]AndroidDesign中ActionBar探究1

    概述 从Google IO 2013大会以来越来越多的Android应用开始遵循Android的设计风格,简单的就是google play和Gmail,在国内我们常用的软件像知乎.印象笔记,主要的界面 ...

  10. 使用Word 2013向cnblog发布博文

    Windows Live软件许久不更新,就想用手头的Word 2013作为cnblogs博客的撰写工具.在查看cnblogs关于Windows Live的配置说明时,发现下列有Word 2007的配置 ...