十个数组元素逆序输出

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

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


运行后却是这样

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

我的疑点在于题目要求输出的宽度为4,而三个数字原本宽度都为1,按要求用%4d的话不应该都是三个空格加一个数字吗,但为什么样例输出 没有空格,我的答案应该怎么改为正确答案呢,谢谢解答

我想要达到的结果

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

printf("%-4d",a[i]);