c语言程序设计简单计算器

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:47:25
整数包括加减乘除和括号运算(一层括号),空格回车无视,非整数或以上运算符号表示ERROR,输入.结束
%./prog
>12*(4+51)
660
>4*5
20
>45^20
ERROR
>.
%

急,在线等。有空的帮帮忙吧。。。谢谢
还有个要求差点忘了。
这个说起来好麻烦。。
输入 处理
12 PushDown 12
* PushDown *,12
( PushDown {(,*,12}
4 PushDown {4,(,*,12}
+ PushDown { +,4,(,*,12}
51 PushDown { 51,+,4,(,*,12}
) PopUp,PopUp,PopUp,PopUp,PushDown 55 (popup把前面4次的输入消去得到结果55,pushdown是得到结果(?我表达不好) {55,*,12}
\n PopUp,PopUp,PopUp (PopUp是消去累计的数,PushDown是累计数)
大概是这个意思。

ps:虽然我不会写,但是我能看出来是不是我要的答案,,还有不要用别人的答案拿来说是自己写的。那样很过分。

#include <stdio.h>
char token;
void match( char expectedToken )
{
if( token == expectedToken ) token = getchar(); else
{
printf("cannot match\n");
exit(1);
}
}
int low( void
{
int result = mid();
while(( token == '+' ) || ( token == '-' ))
if ( token == '+')
{
match('+'); result += mid();
break;
}
else if ( token == '-')
{
match('-');
result -= mid();
break;
}
return result;
}
int mid( void )
{
int div;
int result = high();
while(( token == '*' ) || ( token == '/' ))
if ( token == '*')
{
match('*');
result *= high();
break;
}
else if (token == '/')
{
match('/');