c语言数字偶变0,奇变1问题

问题遇到的现象和发生背景

小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。
如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
输出描述:
输出一个整数,即小乐乐修改后得到的数字。
示例1
输入:
222222
输出:
0

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include 
int count(int x)
{
    int c=0;
    do
    {
        x /= 10;
        c++;
    } while (x > 0);
    return c;
}
int main(void)
{
    int x,cnt,i,a[111],m;
    scanf("%d", &x);
    cnt = count(x);
    for (i = 1; i <= cnt; i++)
    {
        m = x;
        a[i] = m % 10;  //从个位开始存的
        x /= 10;
    }
    for (i = 1; i <= cnt; i++)
    {
        if (a[i] % 2 == 0)
            a[i] = 0;
        else
            a[i] = 1;
    }
    for (i = cnt; i >= 1; i--)
        printf("%d", a[i]);
    return 0;
}

运行结果及详细报错内容

如果我输入类似222的话,就会输出000但如何把它变为只输出一个0呀?

如果输入21,最后输出是多少?上面的代码,第30 31行输出那里修改下,供参考:

#include <stdio.h>
int count(int x)
{
    int c=0;
    do
    {
        x /= 10;
        c++;
    } while (x > 0);
    return c;
}
int main(void)
{
    int x,cnt,i,a[111],m;
    scanf("%d", &x);
    cnt = count(x);
    for (i = 1; i <= cnt; i++)
    {
        m = x;
        a[i] = m % 10;  //从个位开始存的
        x /= 10;
    }
    for (i = 1; i <= cnt; i++)
    {
        if (a[i] % 2 == 0)
            a[i] = 0;
        else
            a[i] = 1;
    }
    for (i = cnt, m = 0; i >= 1; i--)
        m = m * 10 + a[i];
    printf("%d", m);
    return 0;
}

感谢,明白了❤️