C语言程序设计大作业设计说明书修改版(计算器设计)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高级语言程序设计大作业
设计说明书
简单计算器
学院电子信息工程学院
专业班级11级通信工程4班
学生姓名彭艺
学号201130095302
指导老师张伟娜
1.概述:
本程序是在C++6.0环境下开发的一款集整数与小数的四则运算和求余运算为一体的简单计算器。主要运用了赋值、计算、选择结构(switch语句实现多分支选择结构)、条件运算、循环计算、函数调用等原理。
2.程序概要设计:
前实现的功能:
程序已经可以完成整数、小数的基本加减乘除;整数基本求余运算;二进制,八进制,十进制,十六进制的相互转换,并可以对输入者的输入错误提出错误警告;程序可以循环运行,也可以自我实现退出菜单的功能(需要按2次回车)。目前发现的BUG有:
1、在整数输入数字的时候,如果输入的是小数的话会一直循环菜单,不会出现结果,也不会提示输入者输入错误,也不会有结果。
2、在整数求余功能中,如果输入的是小数或者输入不合理也会出现一直循环菜单的情况,同样不会提示输入者输入错误,也不会有结果。
目前没有实现的功能有:
1.给出一个二进制数,不可以计算它的原码、补码和反码。
2.整数,小数的基本运算和整数求余的运算出现错误无法提示,函数不是十分完整。
3.全部进制的函数输入的数字个数都是有限制(数字个数不能大于100),超范围就会输出错误结果,无法实现无限制的输入而得出正确结果。
4.每次算完第一次不能按回车,只能按其他按键,否则会退出,因为按两次回车就会退出程序。
5.每次算完,按非回车键都会出现一级菜单,有点繁琐,再次选择整数、小数、进制运算。
流程图:
3.程序详细设计:
在主函数中设置了全局变量,以实现功能选择,并用char函数实现循环输入。
运用do while语句控制结束程序,即在运算过后,如由键盘输入回车键则结束程序。
之后进入功能选择菜单,先调用写好的menu函数(回车2次可退出程序)。
输入提示及输入控制:
若输入的数字不是1-3,则提示输入错误,重新输入:
(运用选择结构进行判断)
其中,整数、小数、及进制转换计算功能分别使用了另一个switch语句嵌套,实现选择功能。
整数的加减乘除:
运用基本的加减乘除的函数完成,输入和输出的数字为整型。将输入的数字赋值到变量中,在让变量在程序进行相关的基本运算,输出结果即可。
小数的加减乘除:
运用基本的加减乘除的函数完成,输入和输出的数字都双精度浮点型。将输入的数字赋值到变量中,在让变量在程序进行相关的基本运算,输出结果即可。
整数求余运算:
运用%计算来完成,将输入的数字赋值到变量中,在让变量在程序进行%的运算。得出的值就是所求的余数,输出结果即可。
二进制转换八进制:
这个是对输入的数字进行判断,因为二进制只能输入0和1 。二进制转八进制时,利用了二进制转十进制做桥梁,最后再十进制转八进制。
二进制转换十进制
这也是对输入的数字进行判断,只能为0和1。
二进制转换十六进制
对输入的数字进行求余,因为输入的数字只能是0和1,所以最后的输入数字被10整除,结果不会大于1,也就是按照这个原理来实现输入错误进行提醒,如果结果不大于1,就会实现下面的函数。
先将二进制转换为十进制,再十进制转换为十六进制,对10,11,12,13,14,15进行switch语句的转换,分别转换为A,B,C,D,E,F;最后输出为十六进制。
八进制转换二进制
输入的数字在0到7的组合或单个数之间,再对输入的数字对10求余。再对2求余。
八进制转换十进制
输入的数字在0到7的组合或单个数之间,输入的数字对10求余,再经过一下程序得出结果。
八进制转换十六进制
输入的数字在0到7的组合或单个数之间,先由八进制转换到十进制,再由十进制转换到十六进制,对10,11,12,13,14,15进行switch语句的转换,分别转换为A,B,C,D,E,F;最后输出为十六进制。
十六进制转换为二进制
输入的数字要在0到9之间,字母要在A(a)到F(f)之间,否则会出现错误。
再利用这个程序输出数字,先由十六进制转换为十进制,十进制再转换为二进制。
十六进制转换为八进制
输入的数字要在0到9之间,字母要在A(a)到F(f)之间,否则会出现错误。
先由先由十六进制转换为十进制,十进制再转换为八进制。
十六进制转换为十进制
输入的数字要在0到9之间,字母要在A(a)到F(f)之间,否则会出现错误。
4.使用情况菜单:
1.一级菜单
正常使用:
输入错误:
2.二级菜单
输入错误:
进制运算:
整数加法:
整数减法:
整数乘法:
整数除法:
整数除法除数为0:
整数求余:
小数加法:
小数减法:
小数乘法:
小数除法:
二进制转八进制:
二进制转十进制:
二进制转十六进制:
八进制转二进制:
八进制转十进制:
八进制转十六进制:
十进制转二进制:
十进制转八进制:
十进制转十六进制:
十六进制转二进制:
十六进制转八进制:
十六进制转十进制:
5.总结
我刚开始是将整数、小数和进制分开源文件来写,到最后发现将个源文件就很容易出错,要修改好多地方,所以刚开始的时候要注意那些定义变量尽量不要用相同的字母定义。
本程序基本符合大作业的要求,但是还存在一些漏洞,有待改善,例如在整数运算时,如果输入了非整数,程序就不会提示输入错误,菜单就一直循环。
我觉得我这个程序可以运行,但是比较复杂,如果有地方出错,修改范围比较大,不容易找。有些进制运算要与同学讨论才会写。
最后,我很开心完成了这个计算器,但是不是很完美,还有很多漏洞。也会为自己感到有成功感,用自己的双手和脑袋完成一个简单计算器,若有时间还会尝试编译下其他程序,继续提高自己的能力,希望在C语言上有一定的进步。
6.参考文献
C语言设计(第四版) 谭浩强清华大学出版社2010年6月出版