Hola! Pues yo lo haria con arreglos sería un programa bastante largo y tardado pero pues es solo una idea rápida no se si este bien, declararia un arreglo del tamaño del numero de datos que vas a insertar, (int datos[50]) y otro arreglo que cuente los repetidos (int repetidos[50]), y otro para guardar el numero de veces que se repite un numero primero
pides los datos con un for
for (i=0; i<50; i++)
scanf ("%d", &dato[i]); //pides el dato y lo guardas en el arreglo dato
y luego con 2 for vas contando cuantas veces se repite un numero
for (i=0; i<50; i++)
for (j=0; j<50; j++)
{
if ( datos[i]=datos[j]);
{
repetido[i]=datos[i];
cont[0]++;
}
y luego con este ciclo sacas el valor mas grande
max=cont[0];
min=cont[0];
for (i=1; i<n; i++)
{
if (cont[i]<min)
min=cont[i];
if (cont[i]>max)
max=cont[i];
}