C语言计算器小程序源代码+实习报告Word文档格式.docx
- 文档编号:20779059
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:12
- 大小:80.92KB
C语言计算器小程序源代码+实习报告Word文档格式.docx
《C语言计算器小程序源代码+实习报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言计算器小程序源代码+实习报告Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
4.调试分析……………………………………………6
5.核心源程序清单和执行结果………………………6
1.需求分析
1.1程序的功能
本程序是一个计算器小程序,利用算符优先关系,实现对算术四则混合运算表达式的求值并输出结果。
1.2输入输出的要求
输入的形式:
算术表达式,以井号“#”结束。
例如2*(3+4)#;
包含的运算符只能有'
+'
、'
-'
*'
/'
('
、'
)'
;
输出的形式:
运算结果,例如Answeris:
14;
1.3测试数据
第一组:
输入3*(9-4)#输出Answeris:
15
第二组:
输入140/(57+13)#输出Answeris:
2
第三组:
输入56*(12-10)#输出Answeris:
112
2.概要设计
3.详细设计
主要部分详细流程:
(1)设置两个工作栈,分别存放操作数和运算结果
(2)判断字符的优先级
4.调试分析
错误提示1:
错误原因:
在中文输入法下输入的“;
”,导致程序不能识别。
调试方法:
调到英文输入法下输入即可。
错误提示2:
错误原因:
在Init_OPND,Init_OPTR后边都忘加了“&
”符号,导致程序不识别。
调试方法:
在Init_OPND,Init_OPTR后边加上“&
”即可。
5.核心源程序清单和执行结果
全部源代码如下:
#include<
stdio.h>
stdlib.h>
#defineMAX100
typedefstruct/*定义一个栈存放运算数*/
{
inta[MAX];
inttop;
}OPND;
typedefstruct/*定义一个栈存放运算符*/
chara[MAX];
}OPTR;
voidInit_OPND(OPND*s)/*初始化运算数栈*/
s->
top=0;
}
voidInit_OPTR(OPTR*s)/*初始化运算符栈*/
voidPush_OPND(OPND*s,intx)/*压入一个运算数*/
top++;
a[s->
top]=x;
voidPush_OPTR(OPTR*s,charx)/*压入一个运算符*/
intPop_OPND(OPND*s)/*取出一个运算数*/
intx;
x=s->
top];
top--;
returnx;
charPop_OPTR(OPTR*s)/*取出一个运算符*/
charx;
intGetTop_OPND(OPND*s)/*取栈顶运算数*/
return(s->
a[s->
top]);
charGetTop_OPTR(OPTR*s)/*取栈顶运算符*/
intIsOpr(charc)/*判断输入字符是否为运算符*/
if(c=='
||c=='
#'
)
return1;
else
return0;
charPrecede(chars,charc)/*判断字符的优先级*/
switch(s)
case'
:
if(c=='
return'
>
'
;
elseif(c=='
<
elseif(c=='
else
break;
return'
='
intOperate(intx,charopr,inty)/*计算*/
intresult;
switch(opr)
case'
result=x+y;
break;
result=x-y;
result=x*y;
result=x/y;
returnresult;
voidmain()
OPNDsdata;
OPTRsoper;
inta,b,result,i;
charch,theta;
Init_OPND(&
sdata);
Init_OPTR(&
soper);
Push_OPTR(&
soper,'
);
ch=getchar();
while(ch!
||GetTop_OPTR(&
soper)!
)//当读入的字符和OPTR栈顶的字符均为‘#’时结束运算*/
if(!
IsOpr(ch))/*是运算数的情况*/
i=atoi(&
ch);
/*将字符型转为整型*/
ch=getchar();
/*使得可以输入几位数*/
while(!
IsOpr(ch))
{
i=i*10+atoi(&
}
Push_OPND(&
sdata,i);
switch(Precede(GetTop_OPTR(&
soper),ch))/*比较栈顶运算符和刚输入运算符的优先级*/
Push_OPTR(&
soper,ch);
theta=Pop_OPTR(&
b=Pop_OPND(&
a=Pop_OPND(&
result=Operate(a,theta,b);
sdata,result);
printf("
Anwseris:
%d\n"
GetTop_OPND(&
sdata));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 计算器 程序 源代码 实习 报告