oj2694 逆波兰表达式

 1 #include<stdio.h>

 2 #include<stdlib.h>

 3 double exp()

 4 {

 5     char a[10];

 6     scanf("%s",a);

 7     switch(a[0])

 8     {

 9         case '+': return exp()+exp();

10         case '-': return exp()-exp();

11         case '*': return exp()*exp();

12         case '/': return exp()/exp();

13         default : return atof(a);

14     }

15 }

16 int main()

17 {

18     printf("%f\n",exp());

19     return 0;

20 }

/*
前缀表达式是运算符在前,操作数其后,
就是假如碰到一个运算符,其后就需要有连续的两个操作数才能运算消去,
否则就一直等待输入或者等待后面的运算结束得到操作数,
这恰好能用递归实现。
*/

你可能感兴趣的:(表达式)