1696:逆波兰表达式
#include<stdio.h>
#include<cstdlib>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<math.h>
using namespace std;
double abc()
{
char s[100];
cin>>s;
if(s[0]=='+') return abc()+abc();
else if(s[0]=='-')return abc()-abc();
else if(s[0]=='*')return abc()*abc();
else if(s[0]=='/')return abc()/abc();
else
return atof(s);
}
int main()
{
printf("%lf",abc());
return 0;
#include<cstdlib>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<math.h>
using namespace std;
double abc()
{
char s[100];
cin>>s;
if(s[0]=='+') return abc()+abc();
else if(s[0]=='-')return abc()-abc();
else if(s[0]=='*')return abc()*abc();
else if(s[0]=='/')return abc()/abc();
else
return atof(s);
}
int main()
{
printf("%lf",abc());
return 0;
}
这是对的
但是有个地方不明白,当我用这种方法时就会出现错误。
#include<stdio.h>
#include<cstdlib>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<math.h>
using namespace std;
double abc()
{
string s;
cin>>s;
if(s[0]=='+') return abc()+abc();
else if(s[0]=='-')return abc()-abc();
else if(s[0]=='*')return abc()*abc();
else if(s[0]=='/')return abc()/abc();
else
return atof(s);
}
int main()
{
printf("%lf",abc());
return 0;
}