输出整数各位数字,想不到为啥不对

为啥我这个不对
int main()
{
int n,i=1,g,m,p;
scanf("%d",&n);
while(n/10>0){
n=n/10;
i++;
} p=i-1;
for(g=1;g<=i;g++){

        m=n/((int)pow(10,p));
        printf("%d ",m);
        n%=(int)pow(10,p);
        p--;
}
reruen 0;

}

return 写错了
while循环之后n成个位数了,应该用别的变量代替n来除以10计算位数

#include<stdio.h>
#include<math.h>
int main()
{
    int n,b, i = 1, g, m, p;
    scanf("%d", &n);
    b = n;
    while (b / 10 > 0)
    {
        b = b / 10;
        i++;
    }
    p = i - 1;
    for (g = 1; g <= i; g++)
    {
        m = n / ((int)pow(10, p));
        printf("%d ", m);
        n %= (int)pow(10, p);
        p--;
    }
    return 0;
}

如有帮助,望采纳!谢谢!

这个题非常适合用递归来实现,很简洁,几行代码就行

#include <stdio.h>
void dg(int n)
{
    if(n==0)
        return;
    dg(n/10);
    printf("%d ",n%10);
}
int main()
{
    int n;
    scanf("%d",&n);
    dg(n);
    return 0;
}