Мой код не возвращает вывод. Возвращает только код выхода - PullRequest
0 голосов
/ 16 апреля 2019

Я хотел поменять половину входов массивов с другой половиной.

    #include <stdio.h>
    #include <math.h>
    void 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);
           array[i] = a;
           array[i] = array[rev];
           array[rev] =  a;`enter code here`
           }
       printf("%d", array[5]);
       }

1 Ответ

0 голосов
/ 17 апреля 2019

Я согласен с предложениями @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]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...