Я согласен с предложениями @Eugene Sh. и @ FredK. Строка array[5]
в строке printf("%d", array[5]);
выходит за границы, поскольку array
имеет индексы только от 0 до 4. Поскольку я предполагаю, что вы хотите распечатать последний элемент в массиве, вы должны изменить его на printf("%d", array[4]);
, Другое дело, что ваше выражение присваивания array[i] = a;
неверно. Я предполагаю, что выражение является частью процесса обмена из элемента в индексе i
с элементом в индексе rev
. Если это так, то вместо этого вы должны изменить его на a = array[i];
. Я обновляю ваш код в соответствии с моим предложением, и он выводит правильный результат. Я добавил цикл for, чтобы убедиться, что значения array
обращены в целях тестирования. Вы можете удалить его после того, как закончите тестирование.
#include <math.h>
int main() {
double size = 5;
int array[5] = {1, 2, 3, 4, 5};
int half_size = ceil(size / 2);
for(int i = 0; i < half_size; i++){
int a;
int rev = size - (i + 1);
a = array[i];
array[i] = array[rev];
array[rev] = a;
}
for (int i = 0; i < size; ++i) {
printf("%d ", array[i]);
}
printf("\n");
printf("%d", array[4]);
}