Идея состояла бы в том, чтобы сначала отсортировать массив (например, с помощью пузырьковой сортировки. См .: https://en.wikipedia.org/wiki/Bubble_sort). После этого довольно легко определить количество повторяющихся чисел в вашем списке, просто подсчитав количество встречаемости каждого числа.
Сортировка обеспечит преобразование вашего списка из
int list [5] = {1, 2, 1, 2, 4};
в
int list [5] = {1, 1, 2, 2, 4};
И код для подсчета каждого вхождения мог бы выглядеть примерно так:
int idx, currentNumber, currentCounter, numberOfElements;
currentNumber = list[0];
currentCounter = 0;
numberOfElements = sizeof(list) / sizeof(list[0]);
for (idx = 0; idx < numberOfElements; idx++) {
if (list[idx] != currentNumber) {
printf("List contains number %d %d time(s)\n", currentNumber, currentCounter);
currentNumber = list[idx];
currentCounter = 1;
} else {
currentCounter++;
}
}
printf("List contains number %d %d time(s)\n", currentNumber, currentCounter);
если вас интересуют только дубликаты, просто проверьте, больше ли currentCounter единицы. После этого подсчет общего количества дубликатов становится тривиальным.