为什么数组在开头打印零而最后一位丢失?

Why does the array print zero in the beginning with the last digit missing?

我正在尝试分隔数字的数字并打印这些单独的数字。当我这样做时 -:

#include <stdio.h>
#define size 100

int main()
{
    int num, remainder, arr[size], i=0;

    printf("Enter a number : ");
    scanf("%d", &num);

    while(num != 0)
    {
        remainder = num%10;
        arr[i]=remainder;
        i++;
        num /= 10;
    }

    for(int j=i; j>0; j--)
        printf("%d\t", arr[j]);

    printf("\n");

    return 0;
}

显示-:

Output

我不知道为什么会这样。请帮助我。

谢谢。

这应该有效:

#include <stdio.h>
#define size 100

int main()
{
    int num, remainder, arr[size], i=0;

    printf("Enter a number : ");
    scanf("%d", &num);

    while(num != 0)
    {
        remainder = num%10;
        arr[i]=remainder;
        i++;
        num /= 10;
    }

    for(int j=i-1; j>=0; j--)
        printf("%d\t", arr[j]);

    printf("\n");

    return 0;
}

我已将 for(int j=i; j>0; j--) 更改为 for(int j=i-1; j>=0; j--)

或者使用这段代码,速度更快也可以接受0和任何int值

#include <stdio.h>

int main()
{
    int num;
    int i = 1000000000;
    int first_index = 0;

    printf("Enter a number : ");
    scanf("%d", &num);

    while (i>1){
   
       if((num%i*10)/i == 0 && first_index == 0){
           i = i/10;
           if(i==1){
               printf("0");
           }
           continue;
       }
       first_index = 1;
       printf("%d ", (num%i*10)/i);
       i = i/10;
    }
}