读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
Output对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
Sample Input
1 + 2 4 + 2 * 5 - 7 / 11 0
Sample Output
3.00 13.36
#include<iostream> #include<cstdio> #include<cstring> #include<stack> #include<iomanip> using namespace std; stack <double> s; int main() { char c; double a,b; while(cin>>a) { while(!s.empty()) s.pop(); c = getchar(); if(c == ' ' && a == 0) break; s.push(a); scanf("%c", &c); while(cin>>b) { if(c == '*') { a = s.top(); s.pop(); s.push(a*b); } else if(c == '/') { a = s.top(); s.pop(); s.push(a/b); } else if(c == '+') s.push(b); else if(c == '-') s.push(-b); c=getchar(); if(c == ' ') break; scanf("%c", &c); getchar(); } double sum = 0.0; while(!s.empty()) { sum += s.top(); s.pop(); } printf("%.2lf ",sum); } return 0; }