首先自己要知道怎么利用栈来完成这些计算。在输入的时候也要用点小技巧。
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
using namespace std;
int main()
{
char ss[210];
char c;
int n;
double m,sum=0;
while(cin >> n)//一定要用cin
{
sum = 0;
c = getchar();//输入一个字符
if(c=='\n' && n==0)//如果输入的只有一个0
break;
stack<double>num;//创建一个栈
num.push(n);
cin >> c;
while(cin >> n)
{
if(c=='*')
{
m = num.top();//弹出栈顶元素
m = m*n;
num.pop();//删除栈顶元素
num.push(m);//讲计算得到的结果放入栈里面
}
else if(c == '/')
{
m = num.top();
m = m/n;
num.pop();
num.push(m);
}
else if(c == '+')
{
num.push(n);
}
else if(c == '-')
{
num.push(0-n);
}
if(getchar()=='\n')
{
break;
}
c = getchar();
}
while(!num.empty())//栈不为空
{
m = num.top();
sum+=m;
num.pop();
}
printf("%.2lf\n",sum);
}
return 0;
}
原题 http://acm.hdu.edu.cn/showproblem.php?pid=1237