首页 > 学院 > 开发设计 > 正文

HDUoj 1237 简单计算器 ( 栈

2019-11-08 01:59:52
字体:
来源:转载
供稿:网友

简单计算器

Time Limit: 2000/1000 MS (java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 19679    Accepted Submission(s): 6941PRoblem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 Output 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 Sample Input
1 + 2 4 + 2 * 5 - 7 / 11 0 Sample Output
3.00 13.36

好久没写题了 写个水题练练手感

getchar()的用法要注意

测试数据 0 + 1要注意一下

#include<stdio.h>#include<stack>#include<algorithm>using namespace std;int main(){ stack<double> s; int n; while(~scanf("%d",&n)) { char c; c = getchar(); if(c=='/n' && n==0) { break; } s.push(n); c = getchar(); double m; while(~scanf("%d",&n)) { if(c == '*') { m = s.top(); m *= n; s.pop(); s.push(m); } if(c == '/') { m = s.top(); m /= n; s.pop(); s.push(m); } if(c == '+') { s.push(n); } if(c == '-') { n = -n; s.push(n); } if(c=getchar() == '/n') { break; } c = getchar(); } double sum = 0; while(!s.empty()) { sum += s.top(); s.pop(); } printf("%.2lf/n",sum); }return 0;}
上一篇:多线程之线程池的应用

下一篇:UVa129

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表