题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=128
需要理解递归的过程,中间的读取字符串%n可以获得已读取的位数,参考代码:
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
char str[2000];
int pos,len;
double ope()
{
double val = 0;
int n;
switch(str[pos])
{
case '+':pos += 1;return ope() + ope();
case '-':pos += 1;return ope() - ope();
case '*':pos += 1;return ope() * ope();
case '/':pos += 1;return ope() / ope();
case ' ':pos++;return ope();
default:
sscanf(&str[pos],"%lf%n",&val,&n);
pos += n;return val;
}
}
int main()
{
while(gets(str))
{
pos = 0; len = strlen(str);
printf("%.2lf\n",ope());
memset(str,0,sizeof(str));
}
return 0;
}