题目大概是这个样子的:
Eg :读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input : 4 + 2 * 5 - 7 / 11
Output : 13.36
很简单的一个题目,但当时写的时候遇到了点玄学问题……
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <stack>
#include <iomanip>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
stack<double> st;
double m,sum=0,support;char n[2];
while(~scanf("%lf",&m)){
st.push(m);
if(getchar()=='\n'&&m==0){
break;
}
sum=0;
while(~scanf("%s %lf",n,&m)){
if(n[0]=='+'){
st.push(m);
}
if(n[0]=='-'){
st.push(-1*m);
}
if(n[0]=='*'){
support=st.top()*m;
st.pop();
st.push(support);
}
if(n[0]=='/'){
support=st.top()/m;
st.pop();
st.push(support);
}
if(getchar()=='\n'){
break;
}
}
while(!st.empty()){
sum+=st.top();
st.pop();
}
printf("%.2f\n",sum);
}
return 0;
}