算机软件实验报告(编辑修改稿)内容摘要:

if(x==39。 *39。 ||x==39。 /39。 ) switch(y) { case39。 +39。 : z=39。 39。 break。 case39。 39。 : z=39。 39。 break。 case39。 *39。 : z=39。 39。 break。 case39。 /39。 : z=39。 39。 break。 case39。 (39。 : z=39。 39。 break。 case39。 )39。 : z=39。 39。 break。 case39。 39。 : z=39。 39。 break。 } if(x==39。 (39。 ) switch(y) { case39。 )39。 : z=39。 =39。 break。 case39。 39。 :printf(error)。 break。 default: z=39。 39。 break。 } if(x==39。 )39。 ) switch(y) { case39。 (39。 :printf(error)。 break。 default: z=39。 39。 break。 }。 return z。 } Status In(SElemType ch) { if(ch==39。 +39。 ||ch==39。 39。 ||ch==39。 *39。 ||ch==39。 /39。 ||ch==39。 (39。 ||ch==39。 )39。 ||ch==39。 39。 ) return OK。 else return ERROR。 } SElemType Operate(SElemType a,SElemType theta,SElemType b) { SElemType c。 a=a48。 b=b48。 switch(theta) { case39。 +39。 :c=a+b+48。 break。 case39。 39。 :c=ab+48。 break。 case39。 *39。 :c=a*b+48。 break。 case39。 /39。 :c=a/b+48。 } return c。 } SElemType EvaluateExpression() { /* 算术表达式求值的算符优先算法。 设 OPTR 和 OPND 分别为运算符栈和运算数栈 */ SqStack OPTR,OPND。 SElemType a,b,c,x,theta。 InitStack(amp。 OPTR)。 Push(amp。 OPTR,39。 39。 )。 InitStack(amp。 OPND)。 c=getchar()。 GetTop(OPTR,amp。 x)。 while(c!=39。 39。 ||x!=39。 39。 ) { if(In(c)) /* 是运算符之一 */ switch(Precede(x,c)) { case39。 39。 :Push(amp。 OPTR,c)。 /* 栈顶元素优先权低 */ c=getchar()。 break。 case39。 =39。 :Pop(amp。 OPTR,amp。 x)。 /* 脱括号并接收下一字符 */ c=getchar()。 break。 case39。 39。 :Pop(amp。 OPTR,amp。 theta)。 /* 退栈并将运算结果入栈 */ Pop(amp。 OPND,amp。 b)。 Pop(amp。 OPND,amp。 a)。 Push(amp。 OPND,Operate(a,theta,b))。 break。 } else if(c=39。 039。 amp。 amp。 c=39。 939。 ) { Push(amp。 OPND,c)。 c=getchar()。 } else /* c 是非法字符 */ { printf(错误 \n)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。