C语言简单计算器的编写课程设计_第1页
C语言简单计算器的编写课程设计_第2页
C语言简单计算器的编写课程设计_第3页
C语言简单计算器的编写课程设计_第4页
C语言简单计算器的编写课程设计_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2013-2014学年第二学期高级语言程序设计课程设计报告题目:简单计算器专业:数字媒体技术,!ii'夕F'|班级:13级1班1, *姓名:邢洪波指导教师:一王辉成绩:计而与信息工程系,-JIg-yf二0一四年二月二十日1设计内容及要求1.1 利用本学期所学的C语言程序设计课程,运用相关知识,查阅相关资料,编写C语言程序,设计一个简单计算器,要求编写的简单计算器能够模拟windows系统的计算器,用户能够用键盘输入相关数据,能够进行简单的加、减、乘、除运算,并且在程序运行过程中能够正常的退出程序。?在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键进行

2、删除,并且重新输入正确的数据。在数据输入完成后,如果需要2019年9月精心整理放弃本次计算操作,可以利用程序中设置好的按键进行清零,并为下一次运算作准备。1.2 运用相关知识,查阅相关资料,编写一个简单的计算器,能够实现简单的基本的加减乘除运算,在计算器工作时用户能利用键盘或鼠标进行相应操作。程序基本功能要求实现完整,并有简单的验证。程序还须有符合标准的程序设计报告。2概要设计2.1系统流程图2.1系统流程图2.2主要功能表2.2主要功能表厅P文件名主要功能备注1+加法两个操作数2一减法两个操作数3*乘法两个操作数4/除法两个操作数5#开方一个操作数6A乘力两个操作数7Enter等于8Tab清

3、零9q退出3设计过程或程序代码#include<stdio.h>#include<math.h>#include<malloc.h>/*mallocdoublejisuan(chara)(inti=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;i,j,k,m,n,cnt,t1,t2,t3*/charnibo50,zhan250;字符型数组*/doublex,n,l,z=0,zhan350;变量x,n,l,z,zhan350*/typedefstruct以用con定义结构体变量*/(doubled1;intd2;dd;I/工itypedefstru

4、ct(dddata50;inttop;zhan1;zhan1*shu;*/shu=(zhan1*)malloc(sizeof(zhan1);shu->top=0;while(ai!='0')循环是用while语句*/(的头文件代表在内存中开辟存储空间*/*/*"广rI/*X1I,-/*定义整型变量定义定义双精度表不可/*/*定义指针变量精心整理if(ai>='0'&&ai<='9')/*使用if-else语句*/(z=0;j=i+1;while(aj>='0'&&a

5、j<='9')/*用各种循环语句的嵌套*/j+;j-;for(k=i;k<=j;k+)(z=z*10+ak-'0'j=j+1;x=z;if(aj='.')(l=1;i=j+1;j-j=i+1;while(aj>='0'&&aj<='9')/*使用各种循环语句的嵌套*/j+;j-;,-Jfor(k=i;k<=j;k+).-T'|、/X'(n=pow(0.1,l);l=l+1;x=x+n*(ak-'0');i=j+1;elsei=j;shu-

6、>data+shu->top.d1=x;shu->datashu->top.d2=+cnt;nibo+t1='0'+shu->datashu->top.d2;内循环内循环使内循环精心整理nibot1+1='0')elseif(ai='(')(zhan2+t2=ai;i+;)elseif(ai=')')(j=t2;while(zhan2j!='(')(nibo+t1=zhan2j;nibot1+1='0'j-;II-')t2=j-1;i+;)elseif(a

7、i='+')/*对加法的定义*/(while(t2>0&&zhan2t2!='(')i:/*定义当加号和括号同时出现时*/(二%dfnibo+t1=zhan2t2;/*将zhan2t2赋给nibo+t2*/nibot1+1='0't2-;)zhan2+t2=ai;i+;)elseif(ai='-')/*对减法的定义*/(精心整理if(ai-1='$')(a0='0'i=0;)elseif(ai-1='(')(ai-1='0'ai-2='(

8、'i=i-2;t2-;)else(while(t2>0&&zhan2t2!='(')/*对括号的定义*/(nibo+t1=zhan2t2;nibot1+1='0't2-;)zhan2+t2=ai;i+;),-Jelseif(ai='*'|ai='/')/*对乘法和除法的定.-TX-'j"x'义*/(while(zhan2t2='*'|zhan2t2='/'|zhan2t2='A'|zhan2t2='#')/*逻辑

9、运算*/(nibo+t1=zhan2t2;nibot1+1='0't2-;)zhan2+t2=ai;i+;)elseif(ai='A'|ai='#')/*(while(zhan2t2='A'|zhan2t2='#')(nibo+t1=zhan2t2;nibot1+1='0't2-;)zhan2+t2=ai;i+;)while(t2>0)(nibo+t1=zhan2t2;/*nibo+t17nibot1+1='0'/*运算*/t2-;)j=1;t3=0;while(j<=t

10、1)(,-Jif(niboj>='0'&&niboj!='A'&&niboj!='#')(for(i=1;i<=shu->top;i+)(if(int)(niboj-'0')=shu->datai.d2)(m=i;break;)zhan3+t3=shu->datam.d1;)逻辑运算中的或运算将的zhan2t2碰到,0'*/值赋给结束部分程序的精心整理elseif(niboj='+')/*对加法的定义*/(zhan3t3-1=zhan3t3-1+

11、zhan3t3;t3-;elseif(niboj='-')法的定义*/(zhan3t3-1=zhan3t3-1-zhan3t3;t3-;elseif(niboj='*')*/(zhan3t3-1=zhan3t3-1*zhan3t3;t3-;elseif(niboj='/')义*/(zhan3t3-1=zhan3t3-1/zhan3t3;t3-;,-Jelseif(niboj='A')/*.-X:"Iz'(zhan3t3-1=pow(zhan3t3-1,zhan3t3);t3-;/*/*/*对减对乘法的定义对除法的

12、定对乘方的定义*/elseif(niboj='#')的定义*/(zhan3t3=sqrt(zhan3t3);j+;/*对开方精心整理returnzhan3t3;/*返回值*/)voidmain()(for(;)(charx,a50;doublejieguo;inti=0;a0='$,;printf("#表示开方,A表示乘方(支持负数)n");/*对乘方和开方的定义*/printf("请输入表达式无需输入=号直接回车可输出答案退出请输入qnn");scanf("%c",&x);if(x='q

13、9;)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");)4设计结果与分析系统测试结果如下:根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本参

14、考下能够修改。主要是平时看书不仔细、不太注意而产生的,如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将2019年9月精心整理文件先打开,对打开的方式与使用的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能够排除的。另外还有部分注释的位置也错了,最重要的是逻辑上的错误,一般电脑不容易发现。所以更对程序仔细的检查。经认真修改之后重新保存文件。错误原因分析一缺少变量定义,定义位置不正确由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还

15、是很容易找到,不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置特别留意。为减少这样的错误我后来还是用不同的变来名来表示,结果引起的那些错误解决了。语法错误大多的语法错误在通过书本参考下能够修改。主要是平时缺乏锻炼、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号。错误原因分析二注释的位置程序设计中在注释的时候不能同我们平常写字一样随心所欲,我们应该注意注释的格式。注11zri卡释中不能含有C语言可执行的语句。逻辑错误编译、连接的成功并不意味着程序的最终成功,逻

16、辑上的错误机器不易检查出来,这时需要多数据结果进行分析。这种错误的查找是最难的,需要有相当的耐心和细心去把问题找出来,这也是本次程序编辑过程中碰到的最大的难题。往往运行之后得不到令人满意的结果。此时解决的方法,-JIg-yf一则用“分段检查”的方法,在程序的不同位置设几个printf函数语句,输出有关变量的值,逐段往下检查,对检查出的错误进行修改,当调试完毕将设置的printf都删去,若在程序中找不到问题,则再来考虑算法是否逻辑严谨,再进行修改,如此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我就是这样处理这个问题的。所以到最后我找到了错误,及时改正,终于把程序完成了,一切功能显示正常5小结用c语言来编程的技巧,以及对c也有了更加深刻的认识。通过这次两个星期左右的C语言程序课程设计实习,我觉得我学到了很多,以前在课堂上学的东西以为都是一些枯燥无味的东西,直到进行了这次课程设计后我才真正

温馨提示

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

评论

0/150

提交评论