题目大概是这个样子的:
Eg :读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input : 4 + 2 * 5 - 7 / 11Output : 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; }