Пример. Перестановка наоборот (инверсия). Инверсия (от английского inverse - обратный ) - это такая перестановка, когда первый элемент становится последним, второй - предпоследним и т.д.
Эта простая задача имеет один подводный камень. Пусть размер массива N. Тогда элемент A[0] надо переставить с A[N-1], A[1] с A[N-2] и т.д. Заметим, что в любом случае сумма индексов переставляемых элементов равна N-1, поэтому хочется сделать цикл от 0 до N-1, в котором переставить элементы A[i] с A[N-1-i]. Однако при этом вы обнаружите, что массив не изменился. Обратим внимание, что перестановка затрагивает одновременно и первую, и вторую половину массива. Поэтому сначала все элементы будут переставлены правильно, а затем (когда i > N/2) будут возвращены на свои места. Правильное решение - делать перебор, при котором переменная цикла доходит только до середины массива.
#include <stdio.h>
const N = 10;
void main()
{
int i, A[N], c;
// ввод массива A
for ( i = 0; i < N/2; i ++ )
{
c = A[i];
A[i] = A[N-1-i];
A[N-1-i] = c;
}
printf("\n Результат:\n”);
for ( i = 0; i <N; i ++ )
printf("%d ", A[i]);
}