码迷,mamicode.com
首页 > 其他好文 > 详细

暑假集训(1)第六弹 -----简单计算器(Hdoj1237)

时间:2016-07-16 20:18:54      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

Description

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

Input

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

Output

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

Sample Input

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

Sample Output

3.00 13.36
 
 
问题分析:难点主要是要实现乘除法的优先级;可以用一个数组,如果是加号后的数将它存入数组的下一位,减号则将它的相反数存入下一位,如果是乘除,则直接与本位数运算,最后把数组内的数相加得到答案。
技术分享
 1 #include "cstdio"
 2 void mset(double a[])
 3 {
 4    for (int i=0;i<405;i++)
 5       a[i] = 0;
 6 }
 7 int main()
 8 {
 9    double a[405];
10    double sum;
11    int flag,i;
12    int m;
13    char c;
14    while (1)
15    {
16       mset(a);
17       i=0;
18       flag=0;
19       scanf ("%lf",&a[0]);
20       while (getchar() != \n)
21       {
22           sum=0;
23           flag =1;
24           scanf ("%c %d",&c,&m);
25           switch (c)
26           {
27             case + : a[++i] = m;  break;
28             case - : a[++i] = -m; break;
29             case * : a[i] = a[i]*m; break;
30             case / : a[i] = a[i]/m * 1.0; break;
31           }
32       }
33       if (!flag)
34              break;
35       for (int j=0;j<=i+1;j++)
36            sum+=a[j];
37       printf ("%.2lf\n",sum);
38    }
39     return 0;
40 }
View Code

 

暑假集训(1)第六弹 -----简单计算器(Hdoj1237)

标签:

原文地址:http://www.cnblogs.com/huas-zlw/p/5676936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!