C语言计算器程序设计报告

上传人:公**** 文档编号:487213122 上传时间:2024-01-11 格式:DOCX 页数:9 大小:206.19KB
返回 下载 相关 举报
C语言计算器程序设计报告_第1页
第1页 / 共9页
C语言计算器程序设计报告_第2页
第2页 / 共9页
C语言计算器程序设计报告_第3页
第3页 / 共9页
C语言计算器程序设计报告_第4页
第4页 / 共9页
C语言计算器程序设计报告_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《C语言计算器程序设计报告》由会员分享,可在线阅读,更多相关《C语言计算器程序设计报告(9页珍藏版)》请在金锄头文库上搜索。

1、C 语言集中上机实验报告一、 需求分析(1)制作一个计算器,能够计算四则混合运算以及乘方和开方,并显示出正确的结果。(2)程序能根据运算符的高低进行运算(开放符号置左置右不影响正常运算)(3)可以输入括号二、 设计思路(1)运用栈以及结构体来实现,将数字与运算符分别放在结构体与栈里面,将栈以及结构体里的字符数值一一匹配计算,将得出的结果保存到另一个栈里(zhan3)。(2)开始,对所输入的字符串进行转化,把运算符存放在zhan2里面,把数值存放到 data 结构体里面,然后进行运算和操作。( 3)运用循环来实现无限输入,用数组 nibo 来跟踪整个过程,每次运算后将值置空,若检测到空,计算得出

2、结果,退出输入q。三、 流程图四、 主程序段#include#include#includedouble jisuan(char a)int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;char nibo50,zhan250;/zhan2 存放的是运算符double x,n,l,z=0,zhan350;/暂存结果typedef structdouble d1;int d2;dd;typedef structdd data50;int top;zhan1;zhan1 *shu;shu=(zhan1 *)malloc(sizeof(zhan1); shu-top=0;while(

3、ai!=0) if(ai=0&ai=0&aj=9) 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;/如果是数字那么就保存到结构体里 的 dd 数组里的 第二个成员里 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=

4、+) while(t20&zhan2t2!=() nibo+t1=zhan2t2; 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(ai=*|ai=/)while(zhan2t2=*llzhan2t2=7llzhan2t2=Allzhan2t2=#) nibo+t1=zhan2t2

5、;nibot1+1=0;t2-;zhan2+t2=ai;i+;else if(ai=Allai= #)while(zhan2t2=Allzhan2t2=#) nibo+t1=zhan2t2;nibot1+1=0;t2-;zhan2+t2=ai;i+;/把输出的多项式中的数字字符先转换成数值型存入结构体里,然后把加减乘除等的字符存 入到zhan2里-这是转化过程并存储入站下面就是开始计算结果相当于出站的过程把dd结构体里的数值取出和zhan2的字符来进 行运算,当前结果存储到zhan3里,就用nibo数组来判断是否计算完毕while(t20)nibo+t1=zhan2t2;nibot1+1=0;

6、t2-;j=1;t3=0;while(j= 0&n iboj!=人&n iboj!=#)/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-1=zhan3t3-1*zhan3t3;t3-;else if(niboj=/)zhan3t3-1=zhan3t3

7、-1/zhan3t3;t3-;else if(niboj=A) 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);退出请输入 qprintf(请输入表达式无需输入=号直接回车可输出答案nn);scanf(%c,&x);if(x=q) break;while(x!=n)a+i=x;scanf(%c,&x);ai+1=0;jieguo=jisuan(a);printf(n);printf(” 结果为:lf,jieguo);printf(nnn);printf(退出请输入q继续请直接输入nn); 五、 调试分析六、调试说明以及分析:1、当输入为正确的格式时,能算出正确的结果,其中包括:小数、整数 以及个位以上的数字,且运算符包括:加、减、乘、除运算,还有就是可以加 括号等。2、当输入为错误的格式时,不会有结果。2011年 12月 1日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号