简单计算器

来源:互联网 发布:小米4手机没有3g网络 编辑:程序博客网 时间:2024/06/05 18:24

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



//运用栈处理,加号后面的数原样放入栈,减号后面的数放入它的相反数,乘号(除号)后的数将之前的数提出来与之相乘(相除)后在放入栈,最后将栈内的数全部相加即可。