HDU 1237 简单计算器
2017-10-13 14:21
197 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1237
简单计算器
TimeLimit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K
(Java/Others)
Total Submission(s): 7456 Accepted Submission(s):
2401
[align=left]Problem Description[/align]
读入一个只包含 +, -, *, /
的非负整数计算表达式,计算该表达式的值。
[align=left]Input[/align]
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
[align=left]Output[/align]
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
[align=left]Sample Input[/align]
1 + 2 4 + 2
* 5 - 7 / 11 0
[align=left]Sample Output[/align]
3.00
13.36
[align=left]Source[/align]
浙大计算机研究生复试上机考试-2006年
[align=left]Recommend[/align]
JGShining
分析:乘除号应该是这个题的难点,只要把乘除号处理好,剩下的相加很简单。
代码如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
double num[100]; //用于储存经过乘除计算需要最后相加的数字
char
f;
//储存符号
double
s;
//储存输入的数字
double
ans;
//最后的答案
while(cin>>s)
{
memset(num,'\0',sizeof(num));
num[0]=s;
f=getchar();
if(f=='\n'&&s==0)
break;
int i=0;
while(1)
{
cin>>f>>s;
if(f=='*')
num[i]*=s;
else
if(f=='/') num[i]/=s;
else
if(f=='+') num[++i]=s;
else
num[++i]=-s;
if(getchar()=='\n')
break;
}
ans=0;
for(i;i>=0;i--)
{
ans+=num[i];
}
printf("%.2lf\n",ans);
}
return 0;
}
相关文章推荐
- HDU 1237 简单计算器 && 字符串模拟四则运算
- HDU 1233 还是畅通工程
- HDU 2577 How to Type (DP)
- ZZULI_SummerPractice(6) HDU 390…
- HDU 1285 确定比赛名次(拓扑排…
- HDU 1083 Courses (二分匹配)
- HDU 2222 Keywords Search(AC自…
- HDU&nbsp;4339&nbsp;Query&nbsp;(线段树)
- HDU 2700 Parity(找规律)
- HDU 2103 Family planning
- HDU 1785 You Are All Excellent
- HDU 1279 验证角谷猜想
- hdu 1332 LC-Display
- 简单计算器 HDU 1237
- hdu 相遇周期
- hdu 1016 Prime Ring Problem
- hdu 1081 To The Max
- hdu 2433 最短路树
- ACM: 二分图最大匹配 hdu 2063
- hdu 1806 Frequent values 线段…