Я давно программировал на C, но это возможно.
Это просто псевдокод, но вам просто нужно изменить его на способ программирования на Си.
int a[] = {5, 8, 5, 6, 9, 5};
int b[] = {5, 8, 5, 6, 9, 5}; // copy of array a to hold temp
for(int i = 0; i < Size of array; i++ ){
for(int j = i; j < Size of array; j++ ){
if(b[j] != 5){
a[i] = b[j];
a[j] = b[i];
break;
}
}
}
Это будет похоже на (▼: Цель для обмена, F: Завершено, X: Не цель для обмена, N: Не обработано):
▼, ▼, N, N, N, N, N
5, 8, 5, 6, 9, 5
F, ▼, X, ▼, N, N
8, 5, 5, 6, 9, 5
F, F, ▼, X, ▼, N
8, 6, 5, 5, 9, 5
Результат:
8, 6, 9, 5, 5, 5
И удалить 5s, это совсем другое, зависит от того, что вы имеете в виду. Если вы не измените размер массива, тогда они могут быть 0 или неопределенными (null). Поэтому я думаю, что это отличается тем, как вы программируете функцию, которая возвращает массив.