C语言简单计算器的编写课程设计

上传人:e****s 文档编号:111815099 上传时间:2022-06-21 格式:DOC 页数:21 大小:257.50KB
收藏 版权申诉 举报 下载
C语言简单计算器的编写课程设计_第1页
第1页 / 共21页
C语言简单计算器的编写课程设计_第2页
第2页 / 共21页
C语言简单计算器的编写课程设计_第3页
第3页 / 共21页
资源描述:

《C语言简单计算器的编写课程设计》由会员分享,可在线阅读,更多相关《C语言简单计算器的编写课程设计(21页珍藏版)》请在装配图网上搜索。

1、存档资料 成绩: 华东交通大学理工学院课 程 设 计 报 告 书所属课程名称 C语言程序设计 题 目 简单计算器 分 院 电 信 分 院 专业班级 电子商务2021 级 1班 学号 学生姓名 何芳林 指导教师 徐 涢 基 2011年 6 月 13 日 华东交通大学理工学院课 程 设 计 论 文 任 务 书专 业 电子商务 班 级 1班 姓名 何芳林 一、课程设计论文题目 C语言简单计算器的编写 二、课程设计论文工作:自 2021 年 6 月 13 日起至 2021年 6 月 21 日止。三、课程设计论文的内容要求:1.设计一个简单计算器,能进行简单的加、减、乘、除运算等。 2.程序根本功能要求

2、实现完整,并有简单的验证。3.设计报告要求格式标准,符合学校课程设计报告要求。4.报告中流程图要求描述标准,算法设计清楚正确。 学生签名: ( ) 2011 年 6 月 22 日序号项 目等级优秀良好中等及格不及格1课程设计态度评价2出勤情况评价3任务难度评价4工作量饱满评价5任务难度评价6设计中创新性评价7论文书写标准化评价8综合应用能力评价综合评定等级课程设计论文评阅意见评阅人 职称 2021 年 月 日 目录第1章 课程设计内容及要求. . . . . . . . . . . . . . . .51.1内容. . . . . . . . . . . . . . . . . . . . .

3、 . . . . . . . . .51.2要求. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5第2章 系统设计流程图. . . . . . . . . . . . . . . . . 62.1系统流程图. . . . . . . . . . . . . . . . . . . . . . . .62.2主要功能表. . . . . . . . . . . . . . . . . . . . . . . .7第3章 系统测试. . . . . . . . . . . . . . . . . . . . . . . .83.

4、1系统测试. . . . . . . . . . . . . . . . . . . . . . . . . .83.2调试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93.3错误原因分析一. . . . . . . . . . . . . . . . . . . .93.4错误原因分析二. . . . . . . . . . . . . . . . . . .10第4章 使用. . . . . . . . . . . . . . . . . . . . . . . . . . .114.1运行程序进入计算器界面. .

5、. . . . . . . .114.2计算器的使用. . . . . . . . . . . . . . . . . . . .114.3退出程序. . . . . . . . . . . . . . . . . . . . . . .12第5章 课程设计心得. . . . . . . . . . . . . . . . .12第6章 参考文献. . . . . . . . . . . . . . . . . . . . .13附录:源代码第1章 课程设计内容及要求1.1 内容利用本学期所学的?C语言程序设计?课程,运用相关知识,查阅相关资料,编写C语言程序,设计一个简单计算器,要求编写的简

6、单计算器能够模拟windows系统的计算器,用户能够用键盘输入相关数据,能够进行简单的加、减、乘、除运算,并且在程序运行过程中能够正常的退出程序。在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键进行删除,并且重新输入正确的数据。在数据输入完成后,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行清零,并为下一次运算作准备。1.2 要求运用相关知识,查阅相关资料,编写一个简单的计算器,能够实现简单的根本的加减乘除运算,在计算器工作时用户能利用键盘或鼠标进行相应操作。程序根本功能要求实现完整,并有简单的验证。程序还须有符合标准的程序设计报告。第2章系统设计流程图2

7、.1系统流程图输入第一个操作数加法减法乘法除法清零开方乘方显示结果输入第二个操作数结束开始2.1 系统流程图2.2主要功能表2.2 主要功能表序号文件名主要功能备注1+加法两个操作数2减法两个操作数3*乘法两个操作数4/除法两个操作数5#开方一个操作数6乘方两个操作数7Enter等于8Tab清零9q退出第3章系统测试程序的调试是指对程序的过失和排错,为了便于过失、阅读,在设计该程序的过程中我们采用了结构化程序方法编辑,添加了尽可能多的注释,这就为接下来的调试过程带来了很多方便。经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,

8、加以改正,在进行编译如此反复,直到顺利通过编译和连接为止。在本次实习过程中碰到的编译、连接的错误主要有:缺少变量定义、定义为置不正确、语法错误、转义字符漏用、逻辑错误等。3.1系统测试系统测试结果如下:3.2调试根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本参考下能够修改。主要是平时看书不仔细、不太注意而产生的,如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先翻开,对翻开的方式与使用的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能

9、够排除的。另外还有局部注释的位置也错了,最重要的是逻辑上的错误,一般电脑不容易发现。所以更对程序仔细的检查。经认真修改之后重新保存文件。3.3错误原因分析一缺少变量定义,定义位置不正确由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到,不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置特别留意。为减少这样的错误我后来还是用不同的变来名来表示,结果引起的那些错误解决了。语法错误大多的语法错误在通过书本参考下能够修改。主要是平时缺乏锻炼、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过

10、分重视分号的重要性而在for、if、while语句中画蛇添足加分号。3.4错误原因分析二注释的位置程序设计中在注释的时候不能同我们平常写字一样随心所欲,我们应该注意注释的格式。注释中不能含有C语言可执行的语句。逻辑错误编译、连接的成功并不意味着程序的最终成功,逻辑上的错误机器不易检查出来,这时需要多数据结果进行分析。这种错误的查找是最难的,需要有相当的耐心和细心去把问题找出来,这也是本次程序编辑过程中碰到的最大的难题。往往运行之后得不到令人满意的结果。此时解决的方法一那么用“分段检查的方法,在程序的不同位置设几个printf函数语句,输出有关变量的值,逐段往下检查,对检查出的错误进行修改,当调

11、试完毕将设置的printf都删去,假设在程序中找不到问题,那么再来考虑算法是否逻辑严谨,再进行修改,如此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我就是这样处理这个问题的。所以到最后我找到了错误,及时改正,终于把程序完成了,一切功能显示正常。第4章 使用4.1运行程序进入计算器界面翻开软件 进入界面运行结果4.2计算器的使用加法:输入一个数,按“+,输入被加数,按“=,输出结果。减法:输入一个数,按“,输入被减数,按“=,输出结果。乘法:输入一个数,按“*,输入另外个数,按“=,输出结果。除法:输入一个数,按“/,输入另外个数,按“=,输出结果。求开方:按“#,在输入一个数,按“=

12、,输出结果。求乘方:输入一个数,按“,输入另外个数,按“=,输出结果。Tab键:清零Q键:退出计算器界面4.3退出程序直接按关闭按钮退出visual c+软件即可。第5章课程设计心得用C语言来编程的技巧,以及对C也有了更加深刻的认识。通过这次两个星期左右的C语言程序课程设计实习,我觉得我学到了很多,以前在课堂上学的东西以为都是一些枯燥无味的东西,直到进行了这次课程设计后我才真正的明白了什么叫做“书到用时方恨少,深深地感到自己C语言知道的缺乏,感到自己上机编程能力的缺乏,我对C有了更加深刻的认识,提高了我用C语言编程的综合能力和实际操作能力,初步掌握简单软件的分析方法和设计方法。我希望在以后的学

13、习中能有更多这样的时机,让我们能够进行实践操作,从而在实际操作中不断提高我们的综合能力。 第6章参考文献资料1 谢希仁. 计算机网络第五版M. 北京:电子工业出版社,2021年2月2 胡小强 计算机网络M 北京:北京邮电大学出版社2005年1月3 李丽娟 C语言程序设计教程第2版M,人民邮电出版社 2021年3月 附录:源代码:#include#include#include /*malloc的头文件代表在内存中开辟存储空间*/double jisuan(char a)int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; /*定义整型变量i,j,k,m,n,cnt,t1,t2

14、,t3*/ char nibo50,zhan250; /*定义字符型数组*/double x,n,l,z=0,zhan350; /*定义双精度变量x,n,l,z,zhan350*/typedef struct /*表示可以用con定义结构体变量*/ double d1;int d2;dd;typedef struct dd data50;int top; zhan1;zhan1 *shu; /*定义指针变量*/shu=(zhan1 *)malloc(sizeof(zhan1);shu-top=0; while(ai!=0) /*外循环是用while语句*/ if(ai=0&ai=0&aj=9)

15、 /*内循环使用各种循环语句的嵌套*/ j+; j-; for(k=i;k=0&aj=9) /*内循环使用各种循环语句的嵌套*/ j+; j-; for(k=i;kdata+shu-top.d1=x; shu-datashu-top.d2=+cnt; nibo+t1=0+shu-datashu-top.d2; nibot1+1=0;else if(ai=() zhan2+t2=ai; i+;else if(ai=) j=t2; while(zhan2j!=() nibo+t1=zhan2j; nibot1+1=0; j-; t2=j-1; i+;else if(ai=+) /*对加法的定义*/

16、 while(t20&zhan2t2!=() /*定义当加号和括号同时出现时*/ nibo+t1=zhan2t2; /*将zhan2t2赋给nibo+t2*/ nibot1+1=0; t2-; zhan2+t2=ai; i+;else if(ai=-) /*对减法的定义*/ if(ai-1=$) a0=0; i=0; else if(ai-1=() ai-1=0; ai-2=(; i=i-2; t2-; else while(t20&zhan2t2!=() /*对括号的定义*/ nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+; else if

17、(ai=*|ai=/) /*对乘法和除法的定义*/ while(zhan2t2=*|zhan2t2=/|zhan2t2=|zhan2t2=#) /*逻辑运算*/ nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+;else if(ai=|ai=#) /*逻辑运算中的或运算*/ while(zhan2t2=|zhan2t2=#) nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+;while(t20)nibo+t1=zhan2t2; /*将的zhan2t2值赋给nibo+t1*/nibot1+1=0;

18、 /*碰到0结束局部程序的运算*/ t2-;j=1;t3=0;while(j=0&niboj!=&niboj!=#) for(i=1;itop;i+) if(int)(niboj-0)=shu-datai.d2) m=i; break; zhan3+t3=shu-datam.d1; else if(niboj=+) /*对加法的定义*/ zhan3t3-1=zhan3t3-1+zhan3t3; t3-; else if(niboj=-) /*对减法的定义*/ zhan3t3-1=zhan3t3-1-zhan3t3; t3-;else if(niboj=*) /*对乘法的定义*/ zhan3t3

19、-1=zhan3t3-1*zhan3t3; t3-;else if(niboj=/) /*对除法的定义*/ zhan3t3-1=zhan3t3-1/zhan3t3; t3-;else if(niboj=) /*对乘方的定义*/ zhan3t3-1=pow(zhan3t3-1,zhan3t3); t3-;else if(niboj=#) /*对开方的定义*/ zhan3t3=sqrt(zhan3t3);j+;return zhan3t3; /*返回值*/void main()for(;)char x,a50;double jieguo;int i=0;a0=$;printf(#表示开方,表示乘方(支持负数)n); /*对乘方和开方的定义*/ printf(请输入表达式无需输入 = 号 直接回车可输出答案 退出请输入q nn); scanf(%c,&x);if(x=q) break;while(x!=n) /*碰到0结束局部程序的运算*/ a+i=x;scanf(%c,&x);ai+1=0;jieguo=jisuan(a); printf(n); printf(结果为:%lf,jieguo); printf(nnn);printf(退出请输入q 继续请直接输入nn);致 谢

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!