逆波兰表达式

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 using namespace std;
 5 
 6 const int N=55;
 7 char a[N];
 8 double antiPoland(){
 9     scanf("%s",a);
10     if(a[0]=='+')
11         return antiPoland()+antiPoland();
12     if(a[0]=='-')
13         return antiPoland()-antiPoland();
14     if(a[0]=='*')
15         return antiPoland()*antiPoland();
16     if(a[0]=='/')
17         return antiPoland()/antiPoland();
18     return atof(a);
19 }
20 int main(){
21     printf("%f\n",antiPoland());
22     return 0;
23 }

 

 额外收获:

  • 使用scanf("%s",a)向字符数组a存入字符串时,在结束输入时会在结尾处添加一个''(空)字符。
  • 使用printf("%s",a)输出字符数组时,遇到空字符就停止输出
  • 使用atof(str)可以将字符数组转换为浮点数(double)