对一维数组逆序排列,数据输出时宽度为4

问题遇到的现象和发生背景

这是题目

img

问题相关代码,请勿粘贴截图

#include<stdio.h>
#define N 10
int main()
{
int a[N],i,b;
for(i=0;i<N;i++)
{
scanf("%d",&b);
char c=getchar();
a[i]=b;
if(c!=' ')break;
}
for(i=N-1;i>=0;i--)
printf("%4d ",a[i]);
return 0;
}

运行结果及报错内容

运行结果是这样的

img

我的解答思路和尝试过的方法

想知道为什么输出中写了%4d为什么还是会输出7位数字,应该怎么改正呢

我想要达到的结果

代码如下,望采纳


#include<stdio.h>

int main() {
    int a[10];
    for(int i=0; i<10; i++)
        scanf("%d", &a[i]);
    for(int i=9; i>=0; i--) {
        if(a[i]<10000)
            printf("%4d", a[i]);
        else
            printf(" %d", a[i]);
    }
    return 0;
}