HDU1237——简单计算器(栈)
思路:对数字运算进行模拟,若遇到’ + ‘或’ - ‘,先将相应的数字push入栈(若为’ - ‘则push数字的相反数),若遇到优先级大的’ * ’ 或 ’ / '先将相应数字与栈顶元素进行运算后将结果push进入;最后将栈中所有元素相加。 #include <cstdio> #include <cstring> #include <algorithm> #include <stack> using namespace std; int main() { int i,j; char c; char s; double n; while(scanf("%lf%c",&n,&c)!=EOF)//开头特殊处理:0 +'\n'时结束; { if(n==0 && c=='\n') { break; } stack<double>st; double ans=0; while(!st.empty()) { st.pop(); } st.push(n); while(scanf("%c %lf",&s,&n)!=EOF) { if(s=='+') { st.push(n); } if(s=='-') { st.push(-n); } if(s=='*') { double temp=st.top()*n; st.pop(); st.push(temp); } if(s=='/') {