C语言计算器小程序源代码+实习报告Word文档格式.docx

上传人:b****2 文档编号:4508421 上传时间:2023-05-03 格式:DOCX 页数:14 大小:82.83KB
下载 相关 举报
C语言计算器小程序源代码+实习报告Word文档格式.docx_第1页
第1页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第2页
第2页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第3页
第3页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第4页
第4页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第5页
第5页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第6页
第6页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第7页
第7页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第8页
第8页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第9页
第9页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第10页
第10页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第11页
第11页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第12页
第12页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第13页
第13页 / 共14页
C语言计算器小程序源代码+实习报告Word文档格式.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言计算器小程序源代码+实习报告Word文档格式.docx

《C语言计算器小程序源代码+实习报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言计算器小程序源代码+实习报告Word文档格式.docx(14页珍藏版)》请在冰点文库上搜索。

C语言计算器小程序源代码+实习报告Word文档格式.docx

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));

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2