欢迎来到天天文库
浏览记录
ID:11381533
大小:238.00 KB
页数:16页
时间:2018-07-11
《简单计算器课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
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[k]-'0'x=z;z=z*10+a[k
4、]-'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]<='9'){j++;}j--;//回到该操作数的个位fo
5、r(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=k+n(3)逆波兰算法流程1、建立运算符栈stackOperato
6、r用于运算符的存储,压入' '。2、预处理表达式,正、负号前加0(如果一个加号(减号)出现在最前面或左括号后面,则该加号(减号)为正负号)。3、顺序扫描表达式,如果当前字符是数字(优先级为0的符号),则直接输出该数字;如果当前字符为运算符或括号(优先级不为0的符号),则判断第4点。4、若当前运算符为'(',直接入栈;若为')',出栈并顺序输出运算符直到遇到第一个'(',遇到的第一个'('出栈但不输出;若为其它,比较stackOperator栈顶元素与当前元素的优先级:如果栈顶元素运算符优先级>=当前元素的优先级,出
7、栈并顺序输出运算符直到栈顶元素优先级<当前元素优先级,然后当前元素入栈;如果栈顶元素<当前元素,直接入栈。5、重复第3点直到表达式扫描完毕。6、顺序出栈并输出运算符直到栈顶元素为' '。四程序的调试与运行结果说明4.1调试报告1、编译时提示错误:原因为分号是在中文输入法状态下输入,将其改为英文输入状态下了分号即可。2.编译时提示错误原因为头文件里忘了写#include,导致出现Undeclaredidentifier,在头文件里加上即可改正。4.2测试结果※(普通加减乘除四则运算)※(小数的开方
8、运算)※(负数的乘方运算)※(带括号的运算)※(负数的开方运算)※(很大的数也可以运算)五课程设计总结本课程设计我只完成了一些基本的功能,还有很多功能没有实现:如不能进行三角函数运算,不能进行ln,阶乘运算等。还有因为我自己没有设计出计算器界面,所以使用户感觉不是那么方便,因此该设计还有待进一步完善。我觉得要设计出好用的计算器界面,可以利用VC
此文档下载收益归作者所有