一段看起来很简单的c语言代码,但是不懂什么意思。有大神可以帮忙解释一下吗

这是问题:
任意输入一个4位的正整数,要求:
分别输出千位、百位、十位和个位上的数字。

这是网上给的代码:
```#include

int main()
{
int a;
for(scanf("%d",&a);a;a/=10)
{
printf("%d\n",a%10);
}
return 0;
}

对于c语言中的for循环语句,for(初始条件;进入循环体条件;每轮循环结束进行的操作)
所以这段代码的意思是:
1.循环开始前,从标准输入(键盘)读入一个数字赋值给变量a
2.判断a是否等于0,如果不等于0,进入循环体,如果等于0,退出循环
3.每轮循环后对a进行除10操作

算法思想:对于一个整数,对其求10的模得到其个位数,除以10后再求模得到更高位的数字,依次循环下去直到a==0循环结束

这代码根本就是错的

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    int base = 1000;
    for (int i = 0; i < 4; i++)
    {
        printf("%d\n", n / base);
        n = n % base;
        base = base / 10;
    }
}
for(1;2;3)
{4}

1 获取数字赋值给a
2 若a=0,则为假,跳出循环;若a!=0,则运行循环中的内容
3 每次都去掉a的个位数重新赋值给a
4 循环中对10取余就是获取该数的个位。

如是输入的四位数
从千位开始,取,截,
百位,取,截
十位,取,截
个位,取,截
根本没有可以教你,只有靠自己理解,用笔画一画。。