欢迎来到天天文库
浏览记录
ID:58083514
大小:75.00 KB
页数:12页
时间:2020-04-10
《C语言计算器小程序(源代码+实习报告).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、....程序实习报告书起止日期:2014年6月23日至2014年7月4日学号:班级:姓名:指导教师:通信与电子工程学院2014年7月4日.下载可编辑.....目录1.需求分析……………………………………………21.1程序的功能…………………………………………21.2输入输出的要求……………………………………21.3测试数据……………………………………………22.概要设计……………………………………………33.详细设计……………………………………………43.1模块功能说明………………………………………44.调试分析…………
2、…………………………………65.核心源程序清单和执行结果………………………6.下载可编辑.....1.需求分析1.1程序的功能本程序是一个计算器小程序,利用算符优先关系,实现对算术四则混合运算表达式的求值并输出结果。1.2输入输出的要求输入的形式:算术表达式,以井号“#”结束。例如2*(3+4)#;包含的运算符只能有'+'、'-'、'*'、'/'、'('、')';输出的形式:运算结果,例如Answeris:14;1.3测试数据第一组:输入3*(9-4)#输出Answeris:15第二组:输入140/(57+13)#输出A
3、nsweris:2第三组:输入56*(12-10)#输出Answeris:112.下载可编辑.....2.概要设计.下载可编辑.....向SIGN中压入“#”用c=getchar()读字符c!=’#’
4、
5、SIGNgettop!=’#’Nc是否为操作符YN将字符数转换成整形数将c压入DATE用c=getchar()读字符cY结束运算比较SIGNgettop和c的优先级‘<’‘=’‘>’将c压入到SIGN栈用c=getchar()读字符弹出SIGNgettop和c用c=getchar()读字符c弹出DATE栈顶元素a弹出栈顶
6、元素吧b弹出SIGN栈顶元素d运算adb将adb压入DATE栈初始化DATE、SIGN栈.下载可编辑.....3.详细设计主要部分详细流程:(1)设置两个工作栈,分别存放操作数和运算结果(2)判断字符的优先级.下载可编辑.....4.调试分析错误提示1:错误原因:在中文输入法下输入的“;”,导致程序不能识别。调试方法:调到英文输入法下输入即可。错误提示2:.下载可编辑.....错误原因:在Init_OPND,Init_OPTR后边都忘加了“&”符号,导致程序不识别。调试方法:在Init_OPND,Init_OPTR后边加
7、上“&”即可。4.核心源程序清单和执行结果全部源代码如下:#include#include#defineMAX100typedefstruct/*定义一个栈存放运算数*/{inta[MAX];inttop;}OPND;typedefstruct/*定义一个栈存放运算符*/{chara[MAX];inttop;}OPTR;voidInit_OPND(OPND*s)/*初始化运算数栈*/{s->top=0;}voidInit_OPTR(OPTR*s)/*初始化运算符栈*/{s->top=
8、0;}voidPush_OPND(OPND*s,intx)/*压入一个运算数*/{s->top++;s->a[s->top]=x;}voidPush_OPTR(OPTR*s,charx)/*压入一个运算符*/{.下载可编辑.....s->top++;s->a[s->top]=x;}intPop_OPND(OPND*s)/*取出一个运算数*/{intx;x=s->a[s->top];s->top--;returnx;}charPop_OPTR(OPTR*s)/*取出一个运算符*/{charx;x=s->a[s->top];
9、s->top--;returnx;}intGetTop_OPND(OPND*s)/*取栈顶运算数*/{return(s->a[s->top]);}charGetTop_OPTR(OPTR*s)/*取栈顶运算符*/{return(s->a[s->top]);}intIsOpr(charc)/*判断输入字符是否为运算符*/{if(c=='+'
10、
11、c=='-'
12、
13、c=='*'
14、
15、c=='/'
16、
17、c=='('
18、
19、c==')'
20、
21、c=='#')return1;elsereturn0;}charPrecede(chars,charc
22、)/*判断字符的优先级*/{switch(s){case'+':case'-':{if(c=='+'
23、
24、c=='-')return'>';elseif(c=='*'
25、
26、c=='/')return'<';elseif(c=='(')return'<';elseif(c==')')return'>';else.下载可编辑
此文档下载收益归作者所有