c语言计算器小程序方案,C语言计算器小程序(源代码+实习报告).docx

.

.下载可编辑.

程序实习报告书

起止日期:2014年6月23日至2014年7月4日

学 号: 班 级: 姓 名: 指导教师:

通信与电子工程学院

2014年7月4日

目 录

TOC \o "1-5" \h \z \o "Current Document" 需求分析 2

\o "Current Document" 1.1程序的功能2

\o "Current Document" 1.2输入输出的要求2

\o "Current Document" 1.3测试数据2

\o "Current Document" 概要设计3

\o "Current Document" 详细设计4

3.1模块功能说明4

\o "Current Document" 调试分析 6

\o "Current Document" 核心源程序清单和执行结果6

1.需求分析

1.1程序的功能

本程序是一个计算器小程序,利用算符优先关系,实现对 算术四则混合运算表达式的求值并输出结果。

1.2输入输出的要求

输入的形式:算术表达式,以井号“#”结束。例如2*(3+4)# ;

包含的运算符只能有'+' 、'-'、'*'、7'

'('、')';

输出的形式:运算结果,例如Answer is:14 ;

1.3测试数据

第一组:输入 3*(9-4)#输出 Answer is:15

Anusep is 15

Press any key to continue

第二组: 输入 140/(57+13)# 输出 Answer is:2

Inwsel* is 2anv kw号 to continuef

Inwsel* is 2

anv kw号 to continue

s

第三组: 输入 56*(12-10)#输出 Answer is:112

Anuser Is 112

Press any Jwy to cantinue

2.概要设计

Y

N

c是否为操作符

比较SIGNgettop和c的优先级

将c压入到

SIGN 栈

用 c=getchar()

读字符

弹出 SIGNgettop 和c

用 c=getchar()

读字符c

弹出DATE 栈顶元素a

* -

弹出栈顶元 素吧b

* -

弹出 SIGN

栈顶元素d

运算a d b

*

将a d b压入

DATE 栈

* 一

详细设计

主要部分详细流程:

(1)设置两个工作栈,分别存放操作数和运算结果

LypWtfF struct"定义一J卜栈存敢运算数时

<

int

int top:

OP HD;

struct 严定义栈存玻运算符吋

<

ch?r a[MAK]; int tnp;

>

OPTR;

(2)判断字符的优先级

char Precedefchar s,char c)"列断字符的优先;級材

<

suiitch(s)

<

case '*■;

ca^e '-■:

iF(c==*+*I|C==*-■)

return 'J';

else if (€== '*■ I |C==V )

return ;

Else if (i:==T (*)

return '< *;

else if(c--*)*)

return 1>';

else

return ■j1;

>

bredk;

case 1 *':

case :

lf(c== +* | |-*)

return 1>';

else if (c=-b*'||c retdfn 1>':

els? If(c-=1(*) return * <1;

elsp 屮"=丁) return '>-:

els?

return b> F;

>

break:

匚dse j _

< if(c=Tl return

els? return

> br&^k;

CJ5P ?八

{ return )";

>

brtdk;

?K

lf(c—"#") return H =*;

else

return '

br^dki

调试分析

错误提示1:

error C2 01?: unknown ctiaracter ' Oxa3

:error C2Q18: unknown character 1Oxbb1

:error: syntax ^rror : missing b;* l

错误原因:在中文输入法下输入的“;”导致程序不能识别

调试方法:调到英文输入法下输入即可

错误提示2:

earning C4O2Jt: Init OPMD : different typ^s for Fornal and actual parameter 1 er?*or C211&: * Function' : incompatible types

错误原因:

在lnit_OPND,Init

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值