大学生刚开始学c,求帮我看看这段代码问题在哪里

编写程序,输入一个正整数k,分行依次输出各位数字。
#include<stdio.h>
int main()
{
int i,a,x,y,z,m;
scanf("%d",&i);
for(x=i,a=1;x>=10;x=x/10,a++);
for(y=a,z=1;y>1;z=z*10,y=y-1);
for(m=i,a=a,z=z;a>=1;m=i/z,a=a-1,z=z/10)
printf("%d\n",m%10);
return 0;
}
我输入123456,得到6 1 2 3 4 5

//你写的太复杂了,直接除10,输出取余的值就可以了
#include<studio.h>
int main()
{
    int a;
    scanf("%d",&a);
    while(a!=0)
    {
        printf("%d",a%10);
        a/=10;
    }
}