1198:逆波兰表达式

题目连接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1198

 

一递归写法:(由逆波兰表达式的概念而写)---认真理解其概念

 

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstdlib>
 4 double Calculation() //读入一个逆波兰表达式,并计算其值 (注意是读入并计算)
 5 {
 6     char a[10];//注意这个字符数组用于存放读入的表达式,表达式可能是一串数字,暂时把它作为字符串存放,当输入为运算符时,只会占用第一个字符。
 7     scanf("%s",a);
 8     switch (a[0])
 9     {
10         case '+':
11         return Calculation()+Calculation();
12         case '-':
13         return Calculation()-Calculation();
14         case '*':
15         return Calculation()*Calculation();
16         case '/':
17         return Calculation()/Calculation();
18         default:
19         return atof(a);
20         //atof(),是C++语言标准库中的一个字符串处理函数,功能是把字符串转换成浮点数,
21         //所使用的头文件为<stdlib.h>。该函数名是 “ascii to floating point numbers” 的缩写。语法格式为:double atof(const char *nptr)。 
22     }
23 }
24 
25 int main() 
26 {
27     double ans;
28     ans =Calculation();
29     printf("%f\n",ans);
30     return 0;
31 }

 

二、用栈写

1 等讲栈时补充,此处略去10000字

 

posted @ 2018-09-02 17:02  TFLSNOI  阅读(1825)  评论(1编辑  收藏  举报