Problem Description
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
Input
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
Output
求该后缀式所对应的算术表达式的值,并输出之。
Example Input
59*684/-3*+#
Example Output
57
Hint
基本操作数都是一位正整数!
AC代码:
#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
int main()
{
char exp[1005];
scanf("%s",exp);
stack<int>s;
int d1;
for(int i=0;exp[i]!='#';i++)
{
if(exp[i]=='+'||exp[i]=='-'||exp[i]=='*'||exp[i]=='/')
{
if(exp[i] == '+')
{
d1 = s.top();
s.pop();
d1 = s.top()+d1;
s.pop();
s.push(d1);
}
else if(exp[i] == '-')
{
d1 = s.top();
s.pop();
d1 = s.top()-d1;
s.pop();
s.push(d1);
}
else if(exp[i] == '*')
{
d1 = s.top();
s.pop();
d1 = s.top()*d1;
s.pop();
s.push(d1);
}
else if(exp[i] == '/')
{
d1 = s.top();
s.pop();
d1 = s.top()/d1;
s.pop();
s.push(d1);
}
}
else
s.push(exp[i]-'0');
}
printf("%d\n",s.top());
return 0;
}