思路:判断是不是数字字符,如果是数字,入栈,遇到字符就将栈顶元素和次栈顶元素出栈,进行计算操作,然后将计算结果入栈,循环最后,最后剩下一个栈顶元素就是表达式的数值。
代码如下:
#include <stdio.h>
int main()
{
int i=-1,top=-1,a[100];
char ch;
while(scanf("%c",&ch) && ch!='#')
{
if(ch>='0' && ch<='9')
a[++i]=ch-'0';
else
{
int n,m;
n=a[i-1];
m=a[i];
i=i-2;
if(ch=='+')
a[++i]=n+m;
if(ch=='-')
a[++i]=n-m;
if(ch=='*')
a[++i]=n*m;
if(ch=='/')
a[++i]=n/m;
}
}
printf("%d\n",a[0]);
return 0;
}