波兰表达式:在这里就是指运算符前缀。例如2+3可以写成+ 2 3 。
逆波兰表达式:运算符后缀就是逆波兰表达式。例如2+3可以写成2 3 + 。
求值过程有两种:
一种是使用堆栈,另外一种是使用递归函数。
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
char str[100];
double exper()
{
scanf("%s",str);
if(str[0]=='+')
return exper()+exper();
else if(str[0]=='-')
return exper()-exper();
else if(str[0]=='*')
return exper()*exper();
else if(str[0]=='/')
return exper()/exper();
else
return atof(str);
}
int main()
{
printf("%lf
",exper());
return 0;
}
atof(str)把字符串转换为一个double类型的浮点数。atof定义在math.h中,stdlib.h