hdu acm 1237
来源:互联网 发布:ddf24口6类网络配线架 编辑:程序博客网 时间:2024/06/05 01:13
简单计算器
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15040 Accepted Submission(s): 5127
Problem Description
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
Sample Input
1 + 24 + 2 * 5 - 7 / 110
Sample Output
3.0013.36
Source
浙大计算机研究生复试上机考试-2006年
堆栈的应用
我也是借用别人的,他这里输入数字而不是字符的形式,注意括号的输入;
#include<stdio.h> #include<stack> using namespace std; int main() { double a,b; char s1,s2; while(~scanf("%lf",&a)) { s1=getchar(); if(s1=='\n'&&a==0)break;//一开始我写成这个 if(s1=='\n'||a==0)break;,忽略了0+数字的情况 scanf("%c",&s2); stack<double>num; num.push(a); while(~scanf("%lf",&b)) { if(s2=='*') { a=num.top(); num.pop(); num.push(a*b); } if(s2=='/') { a=num.top(); num.pop(); num.push(a/b); } if(s2=='+') num.push(b); if(s2=='-') num.push(-b); s1=getchar(); if(s1=='\n')break; scanf("%c",&s2); } double sum=0; while(!num.empty()) { sum+=num.top(); num.pop(); } printf("%.2lf\n",sum); } return 0; }
0 0
- hdu acm 1237
- hdu-acm
- HDU ACM 2111 Saving HDU
- hdu acm hdu 2115 Java
- ACM HDU 1000
- ACM HDU 1001
- ACM HDU 1002
- ACM HDU 1004
- HDU ACM 1198
- hdu acm 2100 Lovekey
- hdu acm 1913 Computers
- ACM HDU 1003
- ACM HDU 1009
- HDU ACM 1058
- HDU ACM 1257
- HDU ACM 1506
- HDU ACM 2602
- HDU ACM 1176
- Java中HashSet要重写equals方法和hashCode方法
- UVa 11045 My T-shirt suits me (网络流建图+最大流)
- window下的文件路径
- 导航栏+tabBar的使用
- 再谈mobile web retina 下 1px 边框解决方案
- hdu acm 1237
- 二叉查找树
- 再谈DFS(1)
- “无限极”分类数据表设计的简单再总结
- Attribute "xxx" has already been defined
- 【第6篇】TypeScript函数function的案例代码详解
- php-windows环境搭建
- [LeetCode]217-Contains Duplicate 几种解法
- 学习资源集锦