您的位置:首页 > 理论基础

浙大计算机研究生复试上机考试-2006年---《简单计算器》---栈的运用

2018-01-25 15:32 375 查看
#include<cstdio>
#include<cstring>
#include<string>
#include<string.h>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<queue>
#include<stack>
#define ll long long
using namespace std;

int main(){
double a,t;
char b,c[10];
while(scanf("%lf%c",&a,&b)){
if(a==0&&b=='\n'){
break;
}
double ans=0;
stack<double> abc;
abc.push(a);
while(~scanf("%s %lf",c,&a)){
if(c[0]=='+'){
abc.push(a);
}
else if(c[0]=='-'){
abc.push(-a);
}
else if(c[0]=='*'){
t=a*abc.top();
abc.pop();
abc.push(t);
}
else if(c[0]=='/'){
t=abc.top()/a;
abc.pop();
abc.push(t);
}
if(b=getchar(),b=='\n') break;
}
while(!abc.empty()){
ans+=abc.top();
abc.pop();
}
printf("%.2lf\n",ans);
}
return 0;
}


读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 

Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 

Output对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 

Sample Input
1 + 2
4 + 2 * 5 - 7 / 11
0


Sample Output
3.00
13.36
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: