c语言数组问题 求解为什么运行错误

#include <stdio.h>
#define MAX 70
int main(void) {
  
    int i = 0;
    int number[MAX];
    scanf("%d\n", &number[i]);
    i++;
    while (number[i] != 0) {
        scanf("%d\n", &number[i]);
        i++;
    }
    int array_odd[MAX],array_even[MAX];
    int i_even = 0;
    int i_odd = 0;
    while (i > 0) {
        if(number[i]%2 == 0) {
            number[i] = array_even[i_even];
            i_even++;
        } else {
            number[i] = array_odd[i_odd];
            i_odd++; 
        }
    }
    i_even = 0;
    i_odd = 0;
    if (number[0]%2 == 0){
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
    } else {
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
    }
    return 0;
}

img
估计你想要这个结果吧


#include <stdio.h>
#define MAX 70
int main(void) {
    int i = 0;
    int number[MAX];
    int tmp;
    while (1) {
        scanf("%d", &tmp);

        number[i] = tmp;
        i++;
        if (tmp == 0)
        {
            break;
        }
    }
    int array_odd[MAX], array_even[MAX];
    int i_even = 0;
    int i_odd = 0;
    while(i--) {
        if (number[i] % 2 == 0) {
            array_even[i_even]=number[i];
            i_even++;
        }
        else {
            array_odd[i_odd]=number[i] ;
            i_odd++;
        }
    }
    printf("even is :");
        while (i_even--) {
            printf("%d ", array_even[i_even]);
        }
        printf("\n");
        printf("odd is :");
        while (i_odd--) {
            printf("%d ", array_odd[i_odd]);
        }
        printf("\n");

    return 0;
}
#include <stdio.h>
#define MAX 70
int main(void) {
    int i = 0;
    int number[MAX];
    scanf("%d\n", &number[i]);
    i++;
    while (number[i] != 0) {
        scanf("%d\n", &number[i]);
        i++;
    }
    int array_odd[MAX],array_even[MAX];
    int i_even = 0;
    int i_odd = 0;
    for (int j = 0; j < i; ++j) {
        if(number[i]%2 == 0) {
            number[i] = array_even[i_even];
            i_even++;
        } else {
            number[i] = array_odd[i_odd];
            i_odd++; 
        }
    }
    i_even = 0;
    i_odd = 0;
    if (number[0]%2 == 0){
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
    } else {
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
    }
    return 0;
}

编译信息中的“uninitialized”意为未初始化
所以建议你把数组设为全局变量,或是对数组赋一个初始值
(这里只针对编译错误,因为不知道题目)


#include <stdio.h>
#define MAX 70
int number[MAX];
int array_odd[MAX],array_even[MAX];
int main(void) {
  
    int i = 0;
    scanf("%d\n", &number[i]);
    i++;
    while (number[i] != 0) {
        scanf("%d\n", &number[i]);
        i++;
    }
    int i_even = 0;
    int i_odd = 0;
    while (i > 0) {
        if(number[i]%2 == 0) {
            number[i] = array_even[i_even];
            i_even++;
        } else {
            number[i] = array_odd[i_odd];
            i_odd++; 
        }
    }
    i_even = 0;
    i_odd = 0;
    if (number[0]%2 == 0){
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
    } else {
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
        while (i_even > 0) {
            printf("%d ",array_even[i_even]);
            i_even--;
        }
    }
    return 0;
}

不提代码运行想要达到的目的是什么,报错信息不截全,这怎么帮你解决啊?

修改完善如下,见注释,供参考:

#include <stdio.h>
#define MAX 70
int main(void) {
    int i = 0;
    int number[MAX] = {0};
    scanf("%d", &number[i]);//scanf("%d\n", &number[i]);
                                           //i++;
    while (number[i] != 0) {
        i++;
        scanf("%d", &number[i]);//scanf("%d\n", &number[i]);
                                        //i++;
    }
    int array_odd[MAX] = { 0 }, array_even[MAX] = {0};
    int i_even = 0;
    int i_odd = 0;
    i--;
    while (i >= 0) {
        if (number[i] % 2 == 0) {
            array_even[i_even] = number[i];//number[i] = array_even[i_even];
            i_even++;
        }
        else {
            array_odd[i_odd] = number[i];//number[i] = array_odd[i_odd];
            i_odd++;
        }
        i--;
    }
    i_even--; //i_even = 0;
    i_odd--;  //i_odd = 0;
    if (number[0] % 2 == 0) {
        while (i_even >= 0) {
            printf("%d ", array_even[i_even]);
            i_even--;
        }
        while(i_odd >=0){   //while (i_even > 0) {
            printf("%d ", array_odd[i_odd]);//array_even[i_even]);
            i_odd--;      //i_even--;
        }
    }
    else {
        while(i_odd >= 0){    //while (i_even > 0) {
            printf("%d ", array_odd[i_odd]); // array_even[i_even]);
            i_odd--;//i_even--;
        }
        while (i_even >= 0) {
            printf("%d ", array_even[i_even]);
            i_even--;
        }
    }
    return 0;
}