Обменять значения первого четного и последнего нечетного элементов массива - C (СИ)
Формулировка задачи:
Дан целочисленный массив А(М). Обменять значения первого четного и последнего нечетного или выдать сообщение, что это невозможно.
Решение задачи: «Обменять значения первого четного и последнего нечетного элементов массива»
textual
Листинг программы
#include <stdio.h>
int main(void)
{
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
size_t N = sizeof(a) / sizeof(*a);
int* firstEven = NULL;
int* lastOdd = NULL;
for (size_t i = 0; i < N; i++)
{
if (a[i] % 2 == 0)
{
if (firstEven == NULL) firstEven = &a[i];
}
else lastOdd = &a[i];
}
if ((firstEven == NULL) || (lastOdd == NULL)) printf("Operation can not be performed\n");
else
{
int temp = *firstEven;
*firstEven = *lastOdd;
*lastOdd = temp;
}
for (size_t i = 0; i < N; i++) printf("%d ", a[i]);
return 0;
}
Объяснение кода листинга программы
- Объявляется массив a размером 9 элементов.
- Вычисляется размер массива N.
- Объявляются указатели firstEven и lastOdd, которые будут указывать на первый четный и последний нечетный элементы массива соответственно.
- В цикле перебираются все элементы массива.
- Если текущий элемент четный (остаток от деления на 2 равен нулю), то в переменную firstEven записывается его адрес.
- Если текущий элемент нечетный, то в переменную lastOdd записывается его адрес.
- После цикла проверяется, были ли найдены первый четный и последний нечетный элементы.
- Если один из них не был найден, выводится сообщение об ошибке и программа завершается.
- Если оба элемента были найдены, то значениями temp, firstEven и lastOdd меняются значения этих элементов.
- Выводится массив a в формате
1 2 3 4 5 6 7 8 9.