输入数给数组赋值 ,输入-1时停止输入,-1不放入数组

#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[20]={0};
int i,b;
for(i=0;;i++){
scanf("%d",&b);
if(b!=-1) a[i]=b;
printf("a[%d]=%d\n",i,a[i]);
if(b==-1) break;
}

img

为什么会这样?
怎么改?

因为前面那个给变量n读取整数的sccanf读取掉一个整数了,所以后面的scanf少了一个数,修改了一下,如下:


#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[20]={0};
    int i,b;
    for(i=0;i<n;i++){
        scanf("%d",&b);
        if(b!=-1) 
            a[i]=b;
        printf("a[%d]=%d\n",i,a[i]);
        if(b==-1) 
            break;
    }

}