如果说要用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++冰山一角的知识点,而且程序还有不少地方值得改善。欢迎大家交流。