为什么下面的scanf只能使用一次,而不是n次,不是已经包含在循环里面了吗?

为什么下面的scanf只能使用一次,而不是n次,不是已经包含在循环里面了吗
#include<stdio.h>
int main(void)
{
int number, n, arr[10000],a,b,sum=0,i;
scanf("%d%d",&number,&n);
for (i = 0; i < number; i++)
{
arr[i] = 0;
}
for (i = 0; i < n; i++)
{
scanf("%d%d",&a,&b);
for (i = a; i <= b; i++)
{
if (arr[i] == 0)
{
arr[i]++;
sum += arr[i];
}
}
}
printf("%d",number-sum);
return 0;
}

img

你不要每一个循环变量都用i,你用一下j,k问题就会解决的吧

img


循环结束i=b大于了你第一个循环的n,不在进行循环了
你把这个循环的i改为j就可以了,前面定义一个j


#include<stdio.h>
int main(void)
{
int number, n, arr[10000],a,b,sum=0,i,j;
scanf("%d%d",&number,&n);
for (i = 0; i < number; i++)
{
arr[i] = 0;
}
for (i = 0; i < n; i++)
{
scanf("%d%d",&a,&b);
for (j = a; j <= b; j++)
{
if (arr[j] == 0)
{
arr[j]++;
sum += arr[j];
}
}
}
printf("%d",number-sum);
return 0;
}

你输入的是什么呢

你内外层循环变量全是i呀,那i不一下就变得非常大了,外层循环就结束了呀