#include<cstdio>
#include<stack>
#include<iostream>
using namespace std;
int main()
{
stack<double> num;
int a;double t,add=0,number; char b,c,space;
while(scanf("%d%c",&a,&b)!=EOF)
{
if(a==0&&b=='\n')
break;
num.push((double)a);
while(scanf("%c %lf%c",&c,&number,&space)!=EOF)
{
if(c=='+'){num.push(number);}
if(c=='-'){num.push(-1.0*number);}
if(c=='*'){t=num.top();num.pop();num.push(t*number);}
if(c=='/'){t=num.top();num.pop();num.push(t/number);}
if(space!=' ')break;
}
while(!num.empty())
{
add+=num.top();
num.pop();
}
printf("%.2lf\n",add);add=0;
}
return 0;
}
思路:将数字进行处理后存入栈内,最后进行出栈求和的操作。
新人VJ首作。