C++ 四则运算简单设计

2018-06-17 23:54:05来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

 

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

 

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     double a = 0.0, b = 0.0;
 6     double result = 0.0;
 7     char oper;
 8     cout << "请输入两个数:" ;
 9     cin >> a >> b;
10     cout << "请输入运算符:";
11     cin >> oper;
12     switch (oper)
13     {
14     case '+':result = a + b; break;
15     case '-':result = a - b; break;
16     case '*':result = a * b; break;
17     case '/':result = a / b; break;
18     default:
19         cout << "没有此运算符" << endl;
20         break;
21     }
22     cout << "运算结果是: " << result << endl;
23     system("pause");
24     return 0;
25 }

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

那么,问题来了,如果程序都成了这个样子,那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

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

 1 #include "myCalc.h"
 2 #include <iostream>
 3 
 4 double MyCalc::getResult(const char& oper)
 5 {
 6     switch (oper)
 7     {
 8     case '+': 
 9         return getNumberA() + getNumberB(); 
10         break;
11     case '-': 
12         return getNumberA() - getNumberB(); 
13         break;
14     case '*': 
15         return getNumberA() * getNumberB();
16         break;
17     case '/': 
18         if (0.0 == getNumberB())
19         {
20             std::cerr << "divsion by zero" << std::endl;
21             return 0;
22         }
23         return getNumberA() / getNumberB(); 
24         break;
25 
26     default:
27         std::cerr << "There is no operator \'"  << oper << "\'" << std::endl;
28         break;
29     }
30     return 0;
31 }
32 
33 double MyCalc::getNumberA() const
34 {
35     return m_numA;
36 }
37 double MyCalc::getNumberB() const
38 {
39     return m_numB;
40 }
41 
42 
43 void MyCalc::setNumberA(const double& a)
44 {
45     m_numA = a;
46 }
47 
48 void MyCalc::setNumberB(const double& b)
49 {
50     m_numB = b;
51 }
52 
53 MyCalc::MyCalc()
54 {
55 }
56 MyCalc::~MyCalc()
57 {
58 }
myCalc.cpp

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

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

 1 #include <iostream>
 2 #include "myCalc.h"
 3 using namespace std;
 4 int main()
 5 {
 6     double numA = 0.0, numB = 0.0;
 7     char oper = 0;
 8     cout << "Enter two numbers: ";
 9     cin >> numA >> numB;
10     cout << endl;
11     cout << "Enter an operator: ";
12     cin >> oper;
13     MyCalc myCalc(numA, numB);
14     cout << "Result is: " << myCalc.getResult(oper) << endl;
15     system("pause");
16     return 0;
17 }
mainCalc

 

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

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:c/c++笔记--3

下一篇:Token的设计(2)