#include<bits/stdc++.h>
using namespace std;
long long a,b,c,ans; //a:第一个位置的数 b:第二个 c:第三个
char x;
int main()
{
string s;
getline(cin,s);
//求出符号
if(s.find('+')<s.size()) x='+';
else x='-';
//确定第几个数是? 并将其设置为-1
if(s.find('?')>s.find('=')) c=-1;
else if(s.find('?')>s.find(x)) b=-1;
else a=-1;
//将不是?的数字求出来
if(a!=-1){
for(int i=0;i<=s.find(x)-1;i++) {
if(s[i]!=' ') a=a*10+s[i]-'0';
}
}
if(b!=-1){
for(int i=s.find(x)+1;i<=s.find('=')-1;i++) {
if(s[i]!=' ') b=b*10+s[i]-'0';
}
}
if(c!=-1){
for(int i=s.find('=')+1;i<=s.size()-1;i++) {
if(s[i]!=' ') c=c*10+s[i]-'0';
}
}
//判断每种情况的结果
if(c==-1) {
if(x=='+') ans=a+b;
else ans=a-b;
} else if(a==-1) {
if(x=='+') ans=c-b;
else ans=c+b;
} else {
if(x=='+') ans=c-a;
else ans=a-c;
}
cout<<ans;
return 0;
}
如果我在输入字符串时就除掉空格,就能得100分,但如果是上面的方法,在计算数字时排除空格,就只有50分。但是实在想不出来哪里不对!