版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学号2013-2014 学年 第二学期高级语言程序设计课程设计报告题 目 : 简单计算器专 业 : 数字媒体技术班 级 : 13 级 1 班姓 名 : 邢洪波指导教师 : 王辉成绩:计算机与信息工程系二 0 一四年二月二十日1 设计内容及要求利用本学期所学的 C语言程序设计课程,运用相关知识,查阅相 关资料,编写 C语言程序, 设计一个简单计算器, 要求编写的简单计算器 能够模拟 windows系统的计算器, 用户能够用键盘输入相关数据, 能够进 行简单的加、减、乘、除运算,并且在程序运行过程中能够正常的退出程 序。?在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键
2、进行删除, 并且重新输入正确的数据。 在数据输入完成后,如果需要放弃本次计算操作, 可以利用程序中设置好的按键进行清零, 并为下一次运算作准备。运用相关知识,查阅相关资料,编写一个简单的计算器,能够实现简单的基本的加减乘除运算,在计算器工作时用户能利用键盘或鼠标进行相应操作。程序基本功能要求实现完整,并有简单的验证。程序还须有符合标准的程序设计报告。2 概要设计 系统流程图系统流程图主要功能表主要功能表序号文件名主要功能备注1+加法两个操作数2减法两个操作数3*乘法两个操作数4/除法两个操作数5#开方一个操作数定义定义定义6乘方两个操作数7Enter等于8Tab清零9q退出3 设计过程或程序代
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,t3*/char nibo50,zhan250;/* 定义字符型数组 */double x,n,l,z=0,zhan350; /* 双精度变量 x,n,l,z,zhan350*/typedef struct /* 表示可以用 con 定义结构体变量 */double d1
4、;int d2;dd;typedef structdd data50;int top;zhan1;zhan1 *shu; /* 指针变量 */shu=(zhan1 *)malloc(sizeof(zhan1);shu->top=0;while(ai!='0')/* 外循环是用 while 语句 */if(ai>='0'&&ai<='9')/* 内循环使用 if-else 语句 */z=0;j=i+1;while(aj>='0'&&aj<='9') /*内
5、循环使用各种循环语句的嵌套 */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=i+1;while(aj>='0'&&aj<='9')/* 内循环使用各种循环语句的嵌套 */j+;j-;for(k=i;k<=j;k+)n=pow,l);l=l+1;x=x+n*(ak-'0');i=j+1;else i=j;shu->data+shu->top.d1=x;shu->datas
6、hu->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='+')/* 对加法的定义 */*while(t2>0&&zhan2t2!='
7、(') 定义当加号和括号同时出现时 */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(t2>0&&zhan2t2!='(
8、39;) /* 义*/ nibo+t1=zhan2t2; nibot1+1='0't2-;zhan2+t2=ai;i+;else if(ai='*'|ai='/') /* 法的定义 */while(zhan2t2='*'|zhan2t2='/'|zhan2t2=''|zhan2t2='#') /* 逻辑运算 */nibo+t1=zhan2t2; nibot1+1='0't2-;zhan2+t2=ai;i+;else if(ai=''|ai='#
9、') /*while(zhan2t2=''|zhan2t2='#') nibo+t1=zhan2t2;nibot1+1='0't2-;zhan2+t2=ai;i+;while(t2>0)nibo+t1=zhan2t2;/*nibo+t1*/nibot1+1='0'/*分程序的运算 */t2-;j=1;t3=0;while(j<=t1) if(niboj>='0'&&niboj!=''&&niboj!='#')for(i=1;i
10、<=shu->top;i+)if(int)(niboj-'0')=shu->datai.d2)m=i;break;逻辑运算中的或运算 */将的 zhan2t2 值赋给碰到 '0' 结束部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(n
11、iboj='*') /* 法的定义 */zhan3t3-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()f
12、or(;)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",
13、&x);ai+1='0'jieguo=jisuan(a);printf("n");printf("结果为 :%lf",jieguo);printf("nnn");printf(" 退出请输入 q 继续请直接输入 nn");4 设计结果与分析系统测试结果如下:根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本参 考下能够修改。主要是平时看书不仔细、不太注意而产生的,如没有注意具体数据使用 是有一定的范围限定;过分重视分号的重要性而在 for 、if 、while 语句中画蛇
14、添足加分 号;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造成 不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是 能够排除的。另外还有部分注释的位置也错了,最重要的是逻辑上的错误,一般电脑不 容易发现。所以更对程序仔细的检查。经认真修改之后重新保存文件。 错误原因分析一缺少变量定义,定义位置不正确 由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的 提示下一般还是很容易找到,不过需要注意的是在定义的时候有些函数使用同样的变量 名而表示不同的作用,因而使用要很小心,定义及定义的位置特别留意。为减少这样的 错误我后来还是用不
15、同的变来名来表示,结果引起的那些错误解决了。语法错误大多的语法错误在通过书本参考下能够修改。主要是平时缺乏锻炼、不太注意而产 生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在 for 、 if 、while 语句中画蛇添足加分号。错误原因分析二注释的位置 程序设计中在注释的时候不能同我们平常写字一样随心所欲,我们应该注意注释的 格式。注释中不能含有 C语言可执行的语句。逻辑错误 编译、连接的成功并不意味着程序的最终成功,逻辑上的错误机器不易检查出来,这时 需要多数据结果进行分析。这种错误的查找是最难的,需要有相当的耐心和细心去把问 题找出来,这也是本次程序编辑过程中碰到
16、的最大的难题。往往运行之后得不到令人满 意的结果。此时解决的方法一则用“分段检查”的方法,在程序的不同位置设几个 printf 函数语句,输出有关变量的值,逐段往下检查,对检查出的错误进行修改,当调 试完毕将设置的 printf 都删去,若在程序中找不到问题,则再来考虑算法是否逻辑严 谨,再进行修改,如此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我 就是这样处理这个问题的。所以到最后我找到了错误,及时改正,终于把程序完成了, 一切功能显示正常。5 小结用 C 语言来编程的技巧,以及对 C也有了更加深刻的认识。 通过这次两个星期左右的 C语言程序课程设计实习,我觉得我学到了很多,以前在课堂 上学的东西以为都是一些枯燥无味的东西,直到进行了这次课程设计后我才真正的明白 了什么叫做“书到用时方恨少”,深深地感到自己 C语言知道的缺乏,感到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政府电脑采购合同范例
- 住房养猫合同范例
- 出租登山设备合同范例
- 天津滨海职业学院《社会科学量化分析》2023-2024学年第一学期期末试卷
- 公司货物出口合同范例
- 天津滨海汽车工程职业学院《体育实验》2023-2024学年第一学期期末试卷
- 保本型产品合同范例
- 美术班4月特色课程设计
- 天棚打磨合同范例
- 烟囱合同范例
- 移动电子商务在流动货摊零售中的机会
- 操作规程与保养作业指导书-注塑机
- 2024重庆艺术统考美术专业一分一段表
- 跨境电商公共服务平台项目招标文件
- 中职语文基础模块上册-第一次月考卷(1)【知识范围:1-2单元】解析版
- 国开本科《城市管理学》期末考试题库及答案
- 2024年中国主轴产业深度分析、投资前景及发展趋势预测(简版报告)
- 房地产公司总经理职位面试问题
- 进修骨科汇报课件
- 中职班级建设方案课件
- 2023年广东能源集团校园招聘考试真题及答案
评论
0/150
提交评论