zoukankan      html  css  js  c++  java
  • 暑假集训(1)第六弹 -----简单计算器(Hdoj1237)

    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() != '
    ')
    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
    ",sum);
    38    }
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    剑指 Offer 26. 树的子结构
    99. 恢复二叉搜索树(困难)
    93. 复原IP地址
    剑指 Offer 20. 表示数值的字符串
    100. 相同的树
    336. 回文对
    12. 整数转罗马数字(贪心!)
    块链技术在数据中心应用的成与败
    新型大脑启发式学习方法来了,可帮助人工神经网络节省内存和能量
    混合多云为何具有技术优势
  • 原文地址:https://www.cnblogs.com/huas-zlw/p/5676936.html
Copyright © 2011-2022 走看看