输入一个数,输出它是由几个不同的数组成的

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a[100],x,i,j,n=0;
    scanf("%d",&x);
    while(x)
    {
        a[i]=x%10;
        x=x/10;
        for(j=0;j<i;j++)
        {
            if(a[i]==a[j])
                break;
        }
        if(j>=i)    n++;
        i++;
    }
    printf("%d",n);
    return 0;
}

这个代码为啥能运行呢?谢谢解答!

改好了,是想说不能运行吧,望采纳,谢谢:
程序

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a[100], x, i=0, j, n = 0;
    scanf("%d", &x);
    while (x)
    {
        a[i] = x % 10;
        x = x / 10;
        for (j = 0; j < i; j++)
        {
            if (a[i] == a[j])
                break;
        }
        if (j >= i)    n++;
        i++;
    }
    printf("%d", n);
    return 0;
}

效果:

img