题目描述
后缀表达式不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:(2 + 1) * 3 , 即2 1 + 3 *。利用栈结构,将后缀表达式的结果计算出来。
输入
后缀表达式。以#号作为表达式结束标志。为了简单,处理的数据为0-9的整数。
输出
计算结果。
样例输入
3 6 6 2 / - 3 * +#
样例输出
12
参考程序
#include <stdio.h>
int main()
{
int team[1000],tot=-1;
char c;
while(scanf("%c",&c))
{
if(c=='#') break;
else if(c==' ') continue;
else if(c<='9'&&c>='0')team[++tot]=c-'0';
else{
if(c=='+') team[tot-1]=team[tot]+team[tot-1];
if(c=='*') team[tot-1]=team[tot]*team[tot-1];
if(c=='-') team[tot-1]=team[tot-1]-team[tot];
if(c=='/') team[tot-1]=team[tot-1]/team[tot];
tot--;
}
}
printf("%d",team[tot]);
return 0;
}
注意
该程序仅供学习参考!