У тебя суперкривой код. Например, в
(f == 1) > A
Выражение (f == 1) будет или 0, или 1. Зачем ты его сравниваешь с A, непонятно.
Написал рабочий вариант.
#include <stdio.h>
#include <stdlib.h>
int main()
{
enum {arrSize = 16};
_Static_assert(arrSize >= 1, "arrSize should be more than 0");
int arr[arrSize];
for(size_t i = 0; i < arrSize; ++i)
{
arr[i] = rand() % 10; //Чтобы точно были парные элементы
}
int defNum;
scanf("%d", &defNum);
size_t count = 0;
for(size_t i = 0; i < arrSize - 1; ++i)
{
if(arr[i] <= defNum)
{
continue;
}
size_t tmp = 0;
for(size_t j = i + 1; j < arrSize; ++j)
{
if(arr[i] == arr[j])
{
++tmp;
arr[j] = defNum;
}
}
if(tmp)
{
count += tmp + 1;
printf("%d ", arr[i]);
}
}
printf("\n%llu", count);
return 0;
}