1198:逆波兰表达式
非常标准的一个递归题
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)