【问题标题】:Sorting inputted integers into odd and even arrays将输入的整数排序为奇数和偶数数组
【发布时间】:2019-05-28 09:13:22
【问题描述】:

我是 C 的初学者,正在尝试将用户输入的数字分类为奇数和偶数数组。我不明白为什么我的代码不起作用。 干杯。

这是我的代码,我不明白我的错误。

int x[]= {};
int i=0; 
int d=0;
int j=0;
int even[12]={};
int odd[12]={};

printf("Enter amount of numbers: ");  // asking user for amount of numbers
    scanf("%d", &d);

for (j=0; j<d; j++){
    printf("Enter number %d: ", i+1); // scanning input into 'x' array
        scanf("%d", x[i]);
}
printf("Even numbers: ");
for (i=0; i<d; i++) {
    if (x[i] % 2 == 0) {              // sorting into even array
        even[i]=x[i]; 
        printf("%d \n", even[i]);
    }
}
    printf("\n Odd numbers: ");
for (i=0; i<d;i++){
    if (x[i] % 2 != 0) {              // sorting into odd array
        odd[i]=x[i];
        printf("%d \n", odd[i]);
    }
}

此错误消息不断出现:

$ ./main
Enter amount of numbers: 4
Enter number 1: 6
Segmentation fault (core dumped)

【问题讨论】:

  • scanf("%d", x[i]); 应该是scanf("%d", &amp;x[i]);
  • int x[]= {}; 中没有 4 个整数的空格。
  • @Blaze 似乎有效,但它没有将数字读入奇数和偶数数组。

标签: c arrays sorting int


【解决方案1】:

int x[]= {}; 不起作用,因为它不包含任何元素。但是用 {} 初始化它无论如何在 C 中都不起作用,而是这样做:

int x[24] = {0}; // first element explicitely set to 0, the rest default-initialized to 0

您还需要为evenodd 输入{0}。如果它使用{} 为您编译,那么您可能将其编译为 C++ 程序,或者您的编译器无论如何都可以容忍它(但它不适用于每个 C 编译器)。

scanf 需要int 的地址,所以你需要scanf("%d", &amp;x[i]); 而不是scanf("%d", x[i]);。但是i 是这个for (j = 0; j &lt; d; j++) 循环的错误迭代器。而是这样做:

for (j = 0; j < d; j++) {
    printf("Enter number %d: ", j + 1); // scanning input into 'x' array
    scanf("%d", &x[j]);
}

另请注意,按照您执行此操作的方式,数组的一半将留在0。例如,如果我通过6 输入值1,那么odd 包含值1 0 3 0 5 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多