c语言,输入一个数判断这个数有几位并分别输出,分别输出时乱码

#include<stdio.h>
#include<math.h>
void main()
{
int a,n,i,j,c[100];
double b,d;
printf("请输入一个数\n");
scanf("%d",&a);
for(i=1,j=1;i<a;i=i*10,j++) //求这个数一共有几位
{
b=a/i;
if(b>0&&b<10)
{
n=j;
break;
}
}
printf("这个数字一共有%d位\n",n);

i=n*10;                                    //单独给a[0] 赋值 
b=a/i;
c[0]=b;

for(i=(n-1)*10,j=1;j<n-2;i=i/10,j++)
{
    d=pow(10,n-j-1);
    b=a%i/d;
    c[j]=b;
}

j=j+1;
i=10;                                    //单独给a[n] 赋值 
b=a%i;
c[j]=b;

printf("该数字可拆分为\n");
for(i=0;i<n;i++)
{
    printf("%d",c[i]);
}

}