c语言利用函数将十进制数转为二进制的位数在十进制数为1时do-while循环为何一次也不做

#include<stdio.h>
#define N 10
int convert(int m, int binary[])
{
int i,j;
j=0;
do
{
i=m%2;
m=m/2;
if(i==0)
binary[j]=0;
else
binary[j]=1;
j++;
}while(m!=0);
for(i=0;i<j-1;i++)
printf("%d\t",binary[i]);
return j-1;
}
int main()
{
int a,b,i,c[N];
printf("请输入一个十进制数:");
scanf("%d",&a);
b=convert(a,c);
printf("\n");
printf("%d\n",b);
return 0;
}

for (i = 0; i <= j - 1; i++)改成<=


#include<stdio.h>
#define N 10
int convert(int m, int binary[])
{
    int i, j;
    j = 0;
    do
    {
        i = m % 2;
        m = m / 2;
        if (i == 0)
            binary[j] = 0;
        else
            binary[j] = 1;
        j++;
    } while (m != 0);
    for (i = 0; i < j; i++)
        printf("%d\t", binary[i]);
    return j;
}
int main()
{
    int a, b, i, c[N] = {0};
    printf("请输入一个十进制数:");
    scanf("%d", &a);
    b = convert(a, c);
    printf("\n");
    printf("%d\n", b);
    return 0;
}

#include<stdio.h>
#define N 10
int convert(int m, int binary[])
{
int i,j;
j=0;
do
{
i=m%2;
m=m/2;
if(i==0)
binary[j]=0;
else
binary[j]=1;
j++;
}while(m!=0);
for(i=j-1;i>=0;i--)
printf("%d",binary[i]);
return j;
}

int main()
{
int a,b,i,c[N];
printf("请输入一个十进制数:");
scanf("%d",&a);
b=convert(a,c);
printf("\n");
printf("%d\n",b);
return 0;
}