为啥最后输出b的值的时候老是会第一个数字多余?

#include<stdio.h>
int main()
{
int add[10]={0,0,0,0,0,0,0,0,0,0};
int n,m,a,b,c=0,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&m);
while(m>0){
a=m%10;
for(b=0;b<10;b++){
if(a==b){
add[b]++;
}
}
m/=10;
}
}
for(b=0;b<10;b++){
if(add[c]<=add[b]){
add[c]=add[b];
c=b;
}
}
printf("%d:",add[c]);
for(b=0;b<10;b++){
if(add[c]==add[b]){
printf(" %d",b);
}
}
return 0;
}
题目名叫求一批整数中出现最多的数字

帮你稍微改了下

#include <stdio.h>
int main()
{
    int add[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    int n, m, a = 0, i;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        scanf("%d", &m);
        while (m > 0)
        {
            a = m % 10;
            add[a] ++;
            m /= 10;
        }
    }
    int max = add[0];
    for (a = 1; a < 10; a++)
    {
        if (add[a] > max)
        {
            max = add[a];
        }
    }
    printf("%d:", max);
    for (a = 0; a < 10; a++)
    {
        if (add[a] == max)
        {
            printf(" %d", a);
        }
    }
    return 0;
}