代码:
#include <cstdio>
#include <iostream>
using namespace std;
string s;
int s2i(string x)
{
int ans = 0;
while (x != "")
{
ans = ans * 10 + x[0] - '0';
x = x.substr(1);
}
return ans;
}
int work(string x)
{
int p = 0;
for (int i = 1; i < x.size(); i++)
if (x[i] == '+' || x[i] == '-')
p = i;
if (p > 0)
{
if (x[p] == '+')
return work(x.substr(0, p)) + work(x.substr(p + 1));
return work(x.substr(0, p)) - work(x.substr(p + 1));
}
return s2i(x);
}
int main()
{
cin >> s;
printf("%d", work(s));
return 0;
}
思路:
首先,我以样例分析了问题。
在样例1+2-3中,因为输入的是字符串,无法直接计算,所以我把它看成了两部分,也就是1+2-3这就是work函数的作用,然后继续拆解1+2,拆解成1+2,最后,在用s2i函数将字符串转化为数字,问题就解决了。
所以,我就写出了这个juruo(不会打)代码。
希望大佬教教我。