zoukankan      html  css  js  c++  java
  • NYOJ128前缀式计算

    前缀式计算

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
     
    描述

    先说明一下什么是中缀式:

    如2+(3+4)*5这种我们最常见的式子就是中缀式。

    而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))

    然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )

    把括号去掉就是:+ 2 * + 3 4 5

    最后这个式子就是该表达式的前缀表示。

    给你一个前缀表达式,请你计算出该前缀式的值。

    比如:

    + 2 * + 3 4 5的值就是 37

     
    输入
    有多组测试数据,每组测试数据占一行,任意两个操作符之间,任意两个操作数之间,操作数与操作符之间都有一个空格。输入的两个操作数可能是小数,数据保证输入的数都是正数,并且都小于10,操作数数目不超过500。
    以EOF为输入结束的标志。
    输出
    对每组数据,输出该前缀表达式的值。输出结果保留两位小数。
    样例输入
    + 2 * + 3 4 5
    + 5.1 / 3 7
    View Code
     
    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<string.h>
    int ok;
    char a[20];
    double fan()
    {
           if(ok!=0)
          scanf("%s",a);
           ok=1;
           switch(a[0])
           {
                        case'+':return fan()+fan();
                        case '-':return fan()-fan();
                        case'*':return fan()*fan();
                        case'/':return fan()/fan();
                        default:return atof(a);
           }
    }
    int main()
    {
       double ans;
       while(scanf("%s",a)!=EOF)
       {
           ok=0;
           //if(strlen(a)==0)break;
         ans=fan();
         printf("%.2lf\n",ans);
         ok=1;
       }
    
      return 0;
      
    }
           
                        
            
  • 相关阅读:
    [C#]MagicLibrary.dll控件的使用(一)(下拉菜单)
    [SQL server]查询用户表及表结构
    [ASP.net]ASP.net的RUL重写
    [C#]简单XP菜单的实现(一)
    [Javascript]IFRAME运用(1)
    [ASP.net]未解的疑惑!
    [乱七八糟]Google搜索使用详细
    [Javascript]IFRAME运用(2)
    [随文杂记]残局
    [CSS]RevealTrans 滤镜
  • 原文地址:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_2012_08_1600.html
Copyright © 2011-2022 走看看