我的代码没有返回输出。它仅返回退出代码

时间:2019-04-16 20:11:19

标签: c

我想用另一半反转数组输入的一半。

    #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 :(得分:0)

我同意@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]);
}