计算器 c语言课程设计

计算器 c语言课程设计

ID:33921357

大小:39.50 KB

页数:13页

时间:2019-03-02

计算器 c语言课程设计_第1页
计算器 c语言课程设计_第2页
计算器 c语言课程设计_第3页
计算器 c语言课程设计_第4页
计算器 c语言课程设计_第5页
资源描述:

《计算器 c语言课程设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.设计分析:我做的是一个计算器程序,属于B级。题目要求如下:1、完善计算器程序,改为可对实数操作。2、完善程序,改为多个操作数基本四则运算,遇到z为止。3、增加函数,完成四则混合运算,增加相应的主菜单选项4、添加语句,使四则运算具有测试功能。5、可扩充其功能。所给的计算器源程序中已有基本的加、减、乘、除和开方运算,我所要做的就是添加一个可以进行四则混合运算功能的类。本程序所要用到的头文件有如下几种:process,iostream,conio,stdlib,math和assert.原程序中已经定义了加、

2、减、乘、除和开方的运算,它用了类oopcalc将这几个基本运算进行封装。类中包含以下几个函数:voidcalcadd();voidcalcsub();voidcalcdiv();voidcalcmult();voidcalcfartocel();voidcalcceltofar();voidcalcsroot();voidexitprog();voidmenu();...voidbadinput();每个函数的参数形式如下:intadd(floatx,floaty);intsub(floatx,floa

3、ty);intdiv(floatx,floaty);intmult(floatx,floaty);intfartocel(floatx);intceltofar(floatx);intsqroot(floatx);原程序对这几个函数分别做了如下定义:intoopcalc::add(floatx,floaty){val=x+y;returnval;}intoopcalc::sub(floatx,floaty){val=x-y;returnval;}intoopcalc::div(floatx,floaty

4、){...val=x/y;returnval;}intoopcalc::mult(floatx,floaty){val=x*y;returnval;}intoopcalc::fartocel(floatx){intcel=((x-32)*5)/9;returncel;}intoopcalc::celtofar(floatx){intf;f=x*9/5+32;returnf;}intoopcalc::sqroot(floatx){intg=sqrt(x);...returng;}首先要把程序改为可对实数进

5、行操作,由于原程序中的操作数类型都是整形,因此我所采用的办法就是把“int”依次改成“float”。这是最简单的修改办法,也是最有效的修改办法。在menu()函数中使用了switch()语句来对功能进行选择,以便于操作。不同的数字则对应不同的功能。下面所要进行的修改就是添加四则运算功能。首先在switch()语句中添加一个新的选项,以用于作为进行四则运算的入口。然后设计一个简单的计算器类,增加四则运算功能。简单的运算只要求有两个操作数,如原程序中的加、减、乘除。而所增加的四则运算则要求输入多个操作数,有

6、计算机自己通过程序来解决多个数字的运算。这就要求设计的程序能够自动辨别“+”,“-”,“*”,“/”的优先级和结合性。在这里,我运用了栈的功能进行对程序的修改。设有表达式:a+b*c-d/e=...为实现运算符的优先级,采用两个栈:一个数栈,一个运算符栈。数栈暂时存放操作数,运算符栈暂时存放运算符。从左向右扫描算术表达式,遇到操作数,压入数栈;遇到运算符,则与运算符栈栈顶的运算符比较优先级。若新的运算符优先级高或运算符栈空,则压栈;否则,将栈顶运算符出栈,与数字栈出栈的两个数据进行运算,结果压入数栈,再

7、将新运算符压栈。继续扫描,直到遇到=号,扫描结束。栈中数据继续按前面规则出栈。上面所列表达式运算过程如下图所示:(A)(B)(C)(D)(E)NONONONONO----------------------—>e--->---->---->--c-b*c->t1d/d/e->t2t2-t1-t2->t3--a+t3->t4--b*t1_t1_t3---a+a+a+a+--首先a入数栈,“+”入运算符栈,b入数栈,“*”入运算符栈,c入数栈,见图(A);再扫描到“-”号,则“*”和c、b出栈,b*c得t1

8、压入数栈,“-”号压入运算符栈,“/’号压入运算符栈,e压入数栈,遇到=,扫描结束,见图(B);”/“号弹出运算符栈,e、d弹出数栈,d/e得t2压数栈,见图C;”-“...号出栈,t2、t1出栈,t1-t2得t3、t4压栈,见图(D);”+“号出栈,t3、a出栈,栈全空,a+t3得t4,即运算结果。增加四则混合运算的功能要解决的问题是怎样使计算机能分辨出运算符的优先级。这里我想到了我们上课学的栈和链表的知识这题我用到了链栈。首先建立一个链

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。