C语言集中上机报告简单计算器课程设计报告.doc

C语言集中上机报告简单计算器课程设计报告.doc

ID:58508876

大小:263.50 KB

页数:16页

时间:2020-05-18

C语言集中上机报告简单计算器课程设计报告.doc_第1页
C语言集中上机报告简单计算器课程设计报告.doc_第2页
C语言集中上机报告简单计算器课程设计报告.doc_第3页
C语言集中上机报告简单计算器课程设计报告.doc_第4页
C语言集中上机报告简单计算器课程设计报告.doc_第5页
资源描述:

《C语言集中上机报告简单计算器课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C语言集中上机报告简单计算器院系:通信与信息工程学院班级:电子信息工程0120905班姓名:指导教师:林2012年05月20日目录一概述31.1课程设计的目的31.2课程设计的要求31.3课程设计的主要设计思想3二总体方案设计42.1整体框图42.2主要功能表4三详细设计5四程序的调试与运行结果说明64.1调试报告64.2测试结果7五课程设计总结8六后记9七附录9参考文献16一概述1.1课程设计的目的为综合应用C语言程序设计理论知识、进一步提高我们综合解决问题、协调工作的能力和良好的软件开发习惯,学校为

2、我们特意安排此次课程设计。希望通过该实习能够进一步激发我们的学习热情,培养我们初步编程的能力,为后续的学习和发展奠定基础。1.2课程设计的要求掌握从上至下的分析过程;合理完成功能的分解;分析获得实现功能所需的各种数据结构;功能模块的整合;使用面相过程开发语言建立各种数据结构,各种结构体;掌握面相过程开发语言的特点,建立各种函数实现各个功能;调用各个功能模块,完成系统的整体功能;调试、测试各个功能模块,并完成系统的测试;分析画出各个功能的流程等。1.3课程设计的主要设计思想用不同的数组存储操作数和操作符号

3、,然后要定义运算的优先级,因为我准备通过输入运算表达式来直接求出运算结果,所以要使用到括号。通过上网查阅资料,我决定采用逆波兰表达式,它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。其运算方式如下:如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。由于我对栈的应用不是很熟练,因此这里改用数组和指针。但基本思路是类似的。二总体方案设计2.1整体框图N键入一个符号或数字号是否为整数?z=z*10+a[

4、k]-'0'x=z;z=z*10+a[k]-'0';n=pow(0.1,l)x=z+n输出结果YN继续键入符号?Y退出x=q?Y开始N2.2主要功能表序号文件名主要功能备注1+加法两个操作数2-减法两个操作数3*乘法两个操作数4/除法两个操作数5#开方一个操作数6^乘方两个操作数7Enter等于8q退出三详细设计主要部分的详细流程图(1)if(a[i]>='0'&&a[i]<='9')//循环使用if-else语句,一个操作数的表示{z=0;j=i+1;while(a[j]>='0'&&a[j]<='

5、9'){j++;}j--;//回到该操作数的个位for(k=i;k<=j;k++){z=z*10+a[k]-'0';}j=j+1;x=z;ijX<=z(2)if(a[j]=='.'){l=1;i=j+1;j=i+1;while(a[j]>='0'&&a[j]<='9'){j++;}j--;for(k=i;k<=j;k++){n=pow(0.1,l);//pow(x,y)表示计算x的y次方,这里指计算0.1的l次方l=l+1;x=x+n*(a[k]-'0');//一个带小数的操作数读取完成}ij.knx=

6、k+n(3)逆波兰算法流程1、建立运算符栈stackOperator用于运算符的存储,压入''。2、预处理表达式,正、负号前加0(如果一个加号(减号)出现在最前面或左括号后面,则该加号(减号)为正负号)。3、顺序扫描表达式,如果当前字符是数字(优先级为0的符号),则直接输出该数字;如果当前字符为运算符或括号(优先级不为0的符号),则判断第4点。4、若当前运算符为'(',直接入栈;若为')',出栈并顺序输出运算符直到遇到第一个'(',遇到的第一个'('出栈但不输出;若为其它,比较stackOperat

7、or栈顶元素与当前元素的优先级:如果栈顶元素运算符优先级>=当前元素的优先级,出栈并顺序输出运算符直到栈顶元素优先级<当前元素优先级,然后当前元素入栈;如果栈顶元素<当前元素,直接入栈。5、重复第3点直到表达式扫描完毕。6、顺序出栈并输出运算符直到栈顶元素为''。四程序的调试与运行结果说明4.1调试报告1、编译时提示错误:原因为分号是在中文输入法状态下输入,将其改为英文输入状态下了分号即可。2.编译时提示错误原因为头文件里忘了写#include,导致出现Undeclaredide

8、ntifier,在头文件里加上即可改正。4.2测试结果※(普通加减乘除四则运算)※(小数的开方运算)※(负数的乘方运算)※(带括号的运算)※(负数的开方运算)※(很大的数也可以运算)五课程设计总结本课程设计我只完成了一些基本的功能,还有很多功能没有实现:如不能进行三角函数运算,不能进行ln,阶乘运算等。还有因为我自己没有设计出计算器界面,所以使用户感觉不是那么方便,因此该设计还有待进一步完善。我觉得要设计出好用的计算器界面,可以利用VC++

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

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

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