https://www.jisuanke.com/problem/T3855
我代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long int n,a[100001]={0},b[100001]={0},c[100001],o=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
}
for(int i=0;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
c[i]+=a[j];
}
if(i>0)
{
for(int j=0;j<=i;j++)
c[i]+=b[j];
}
}
for(int i=0;i<=n-1;i++)
o+=c[i]^c[i+1];
cout<<o;
}
麻烦看下,谢谢
不知道你这个问题是否已经解决, 如果还没有解决的话:根据参考资料中的代码,问题出现在第13行的代码中,两次使用了scanf函数来获取输入,但是第二次使用scanf函数时,没有传入正确的参数。在这里,由于c是一个字符,必须使用%c来接收输入的字符,所以需要把第13行的代码修改为scanf("%c", &c);
。此外,我还注意到第24行的空格缩进不正确,需要修复。
修改后的代码如下:
#include <stdio.h>
#include <string.h>
int main(void)
{
int sum, a, b;
char c;
while (scanf("%d", &a) != EOF)
{
sum = a;
while (scanf(" %c", &c) != EOF) // 修改了这一行的代码
{
scanf("%d", &b);
if (c == '+')
sum = sum + b;
else if (c == '-')
sum = sum - b;
else if (c == '*')
sum = sum * b;
else if (c == '/')
sum = sum / b;
else if (c == '=')
break;
}
printf("%d\n", sum);
}
return 0;
}
请注意第13行的代码中的空格,它是为了跳过之前输入的换行符。这是因为在之前的输入中,按下回车键后会留下一个换行符,而字符输入%c会读取该换行符。通过在%c前面添加一个空格,可以确保scanf读取到正确的字符。
希望这个修改能解决你的问题。如果还有其他问题,请随时向我提问。
c[i]+=a[j];
c数组没有初始化为0 啊
c[100001] = {0};