У вас небольшая ошибка в сравнении символов с цифрами:
if(string[j] == (char)i) numbers[i]++; //Определяем частоту, с которой встречается каждая цифра
Цифры, которые вы вводите с консоли, записываются в память не как десятичные цифры, а как ASCII символы, т.е. если вы ввели с клавиатуры символ '0' и вы считываете его с помощью getchar(), то он у вас сохранится как ASCII значение символа '0' (в десятичной системе представляет собой число 48). Чтобы программа работала, как вы и задумали, нужно из введеного символа вычитать 'смещение' нуля в таблице ASCII:
if((string[j] - '0') == i) numbers[i]++; //Определяем частоту, с которой встречается каждая цифра