NO.3 函数调用之简单计算器程序
来源:互联网 发布:js alert 变量 编辑:程序博客网 时间:2024/04/28 23:02
代码:
/* *Copyright (c) 2015 深圳大学信工电子 *ALL right reserved *文件名;简单计算器.cpp *作者;笨鸟 *完成日期2015年11月19日 *问题描述:函数调用之简单计算器 *输入描述:键盘键入运算字符和数据直至输入的字运算符为#为止 *程序输出:输出计算结果 */ #include <iostream>#include <stdio.h>using namespace std;double add(double,double);double minu(double,double);double multi(double,double);double div(double,double);double Calcuate(double,double,char);int main () { char a; double b,c,n; do { cout<<"请输入字符:"<<endl; cin.get(a); if(a=='#') break; cout<<"请输入数据:"<<endl; cin>>b>>c; n=Calcuate(b,c,a); cout<<"运算结果为:"<<n<<endl; fflush(stdin); //缺少则将导致程序运行过程出现错误 文末有图
} while(a!='#'); return 0;}double add(double b,double c) {double n;n=b+c;return n;}double minu(double b,double c) {double n;n=b-c;return n;}double multi(double b,double c) {double n;n=b*c;return n;}double div(double b,double c) {double n;n=b/c;return n;}double Calcuate(double b,double c,char a) {double n; switch (a) { case '+': n=add(b,c); break;case '-': n=minu(b,c); break;case '*': n=multi(b,c); break;case '/': n=div(b,c); break;} return n ;}
运行结果:
如缺少 fflush(stdin),将在运行过程中出现两处奇怪的错误:
错误一:字符的输入将被跳过,直接要求输入数据
输入字符为#后出现第二次错误:直接输出奇怪的运算结果,而且循环反复
错误分析:
这个程序首先提示用户输入一个字符,然后等待用户输入,如果用户输入的是字符,
程序会读取刚才输入的字符,然后提示用户输入一个整数,等待用户 输入。
第一次错误是因为第一次输入的字符会遗留在“输入缓冲区”中,缓冲中有数据,故而 cin.get 函数不会等待用户输入,直接就去缓冲中读取,而且读取的字符为随机值,然后要求输入数据,
而第二次错误,由于程序要求输入数据,用户却输入字符,这个字符被遗留在存放数据的缓冲中,而cout只能读入数据,如此反复,从而导致不停地输出“奇怪的运算结果。
0 0
- NO.3 函数调用之简单计算器程序
- winform程序之加法计算器(简单)
- 简单的计算器程序
- 简单计算器程序
- Android简单计算器程序
- 简单的计算器程序
- Matlab程序入门GUI项目之二:简单科学计算器
- JQ 之简单计算器
- MFC程序启动函数调用简单流程
- 一个简单的计算器程序
- 习题:简单的计算器程序
- 简单的计算器程序 c++
- 简单LinuxC程序关于简单计算器(函数指针与回调函数)
- 反汇编之简单函数调用
- JavaSE技术之简单计算器。
- IOS开发之简单计算器
- 学习Qt之简单计算器
- Swift 实践之简单计算器
- AAC音频格式分析与解码
- Alcatraz 使用教程
- android 新手错误
- 哈希表(HashMap)分析及实现(JAVA)
- 如何判断文件的编码方式
- NO.3 函数调用之简单计算器程序
- 输入设备驱动之按键设备驱动_笔记
- ListControl控件绘制网格线
- 用Libaad2来进行AAC解码
- java读取csv数据到list缓存,并对list集合分组统计结果
- The Java Logging Mess
- 堆和栈的区别是啥?
- HTTP1.0协议详解
- Ubuntu搭建Android开发环境