请问楼主在吗
by yi_zhi_naxida @ 2023-07-11 15:35:21
你可以不用flag(个人觉得, 我是蒟蒻, 想不想听, 自己决定)
by yi_zhi_naxida @ 2023-07-11 15:37:17
```cpp
#include <bits/stdc++.h>
using namespace std;
string s;
int x=-1,y=-1,z=-1,sum;
int flag=0,fu;
int main()
{
getline(cin,s);
for(int i=0;i<s.size();i++)
{
if(s[i]=='?')
flag++;
if(s[i]>='0'&&s[i]<='9')
{
sum=0;
while((s[i]>='0'&&s[i]<='9')||(s[i]==' '))
{
if(s[i]==' ')
i++;
else
{
sum=sum*10+(s[i]-'0');
i++;
}
}
i--;
if(flag==2)
{
z=sum;
break;
}
else if(flag==1)
{
y=sum;
flag++;
}
else if(flag==0)
{
x=sum;
flag++;
}
}
if(s[i]=='+')
fu=0;
if(s[i]=='-')
fu=1;
}
if(x==-1)
{
if(fu==0)
cout<<z-y;
else
cout<<z+y;
}
if(y==-1)
{
if(fu==0)
cout<<z-x;
else
cout<<x-z;
}
if(z==-1)
{
if(fu==0)
cout<<x+y;
else
cout<<x-y;
}
return 0;
}
```
主要改动了以下几个地方:
1.while后要i--,因为此时的s[i]不是数值,在加上for循环的i++会忽略一些字符。
2.if(y==-1)中fu值为1的情况。属于低级错误了吧,应当是x-z。
[亲测有效](https://www.luogu.com.cn/record/114898286)
by RaymondFang @ 2023-07-11 15:41:36
首先看一下题目,可以看出来可以用字符串,而数字所对应的序号只要判断一下是不是<='9' && >='0', 是的话就 - '0',不是就不管。
by yi_zhi_naxida @ 2023-07-11 15:41:58