题目描述
后缀表达式不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:(2 + 1) * 3 , 即2 1 + 3 *。利用栈结构,将后缀表达式的结果计算出来。
输入
后缀表达式。以#号作为表达式结束标志。为了简单,处理的数据为0-9的整数。
输出
计算结果。
#include<bits/stdc++.h>
using namespace std;
int a[1005], i = 0;
char ch;
int main(){
for(;ch!='#';){
cin>>ch;
if(ch>='0'&&ch<='9') a[i] = ch - 48, i++;
else if(ch == '+') a[i-2] += a[i-1], i--;
else if(ch == '-') a[i-2] -= a[i-1], i--;
else if(ch == '*') a[i-2] *= a[i-1], i--;
else if(ch == '/') a[i-2] /= a[i-1], i--;
}
cout<<a[0];
return 0;
}