题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1237
题记:题目不难,用栈stack即可,就是要十分小心空格输入的处理。
#include<bits/stdc++.h>
using namespace std;
const int N=305;
int main(){
double n,temp,b;
char c;
char d;
while(scanf("%lf%c",&n,&c)){
if(n==0&&c=='\n')
break;
stack<double>s;
s.push(n);
while(~scanf("%c %lf",&d,&n)){
if(d=='+')s.push(n);
else if(d=='-')s.push(-n);
else if(d=='*'){
temp=n*s.top();
s.pop();
s.push(temp);
}
else{
temp=s.top()/n;
s.pop();
s.push(temp);
}
c=getchar();
if(c=='\n')
break;
}
double ans=0;
while (!s.empty())
{
ans += s.top();
s.pop();
}
printf("%.2lf\n", ans);
}
return 0;
}