#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;
}
估计你想要这个结果吧
#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;
}