C++ 四则运算简单设计
如果说要用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++ 四则运算简单设计的更多相关文章
- Java消息系统简单设计与实现
前言:由于导师在我的毕设项目里加了消息系统(本来想水水就过的..),没办法...来稍微研究研究吧..简单简单... 需求分析 我的毕设是一个博客系统,类似于简书这样的,所以消息系统也类似,在用户的消息 ...
- 学生与部门管理app-产品功能与界面的简单设计
学生与部门管理app-产品功能与界面的简单设计 1. 结对成员学号 我:********* 大佬:*******10 2. 需求分析(NABCD模型) 2.1 N-需求 各个部门在开学初占据学校青春广 ...
- C#网络编程TCP通信实例程序简单设计
C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试 ...
- Java秒杀简单设计二:数据库表和Dao层设计
Java秒杀简单设计二:数据库表Dao层设计 上一篇中搭建springboot项目环境和设计数据库表 https://www.cnblogs.com/taiguyiba/p/9791431.html ...
- SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建
SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 技术栈 : SpringBoot + shiro + jpa + freemark ,因为篇幅原因,这里只 ...
- 3.NetDh框架之缓存操作类和二次开发模式简单设计(附源码和示例代码)
前言 NetDh框架适用于C/S.B/S的服务端框架,可用于项目开发和学习.目前包含以下四个模块 1.数据库操作层封装Dapper,支持多种数据库类型.多库实例,简单强大: 此部分具体说明可参考博客: ...
- LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法
LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装置不需要额外提供电源.LC滤波器一般是由滤波电容器.电抗器和电阻器适当组合而成,与谐 ...
- 基于ARM处理器的反汇编器软件简单设计及实现
写在前面 2012年写的毕业设计,仅供参考 反汇编的目的 缺乏某些必要的说明资料的情况下, 想获得某些软件系统的源代码.设计思想及理念, 以便复制, 改造.移植和发展: 从源码上对软件的可靠性和安全性 ...
- 四则运算GUI设计2.0
使用QT设计的界面如下: 程序流程是点击开始出题,会在题目后面的框中显示所出的题目,在输入答案以后点击提交答案会判断输入的答案是否正确. 输入后的界面: 部分代码如下: qtyunsuan.h文件: ...
随机推荐
- cocos2d-html5的jsb模式下如何在编译时自动将js编译为jsc
cocos2d-html5是一个用JS来开发游戏的框架,通过javascript Binding的方式可以将游戏编译到手机上.这对前端开发人员来说非常方便,开发效率也比使用c++开发要快的多. jsb ...
- SPA初试-1
本篇内容是在上一次的基础上进行改进,对状态的定义进行了修改,一个状态的定义如下: function state(stateName, template, templateUrl) { this.sta ...
- [Javascript]jquery $(document).ready() 与window.onload的区别
引用:http://www.jb51.net/article/21628.htm Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload ...
- Java基础知识强化之集合框架笔记67:Hashtable的实现原理
至于Hashtable的实现原理,直接参考网友的博客,总结很全面: 深入Java集合学习系列:Hashtable的实现原理
- iOS中通知中心NSNotificationCenter应用总结
通知中心(NSNotificationCenter)实际是在程序内部提供了一种广播机制.把接收到的消息,根据内部的消息转发表,将消息转发给需要的对象.这句话其实已经很明显的告诉我们要如何使用通知了.第 ...
- oracle优化辅助SQL语句
--查询正在执行的SQL语句 select a.program, b.spid, c.sql_text,c.SQL_FULLTEXT,c.SQL_ID from v$session a, v$proc ...
- Svn 的 Update 与Maven 的update project 作用有什么区别
1.svn update只是更新项目的SVN仓库.2.maven update project则是进行一系列的操作(跟自己的配置有关,可能包含一下操作):更新SVN.更新项目关联.编译项目.构建发布等 ...
- B-tree解释
1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树:⑵若根结点不是叶子结点,则至少 ...
- codeforces 579D D. "Or" Game(前后缀+贪心)
题目链接: D. "Or" Game time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Python_使用smtplib和email模块发送邮件
[http://blog.csdn.net/menglei8625/article/details/7721746] SMTP (Simple Mail Transfer Protocol) 邮件传送 ...