在数组中存储奇数和偶数

时间:2013-12-06 02:04:44

标签: c arrays

我们的任务是制作一个程序,只接受用户的十个输入,然后将其分类为偶数或奇数数组。

  1. 接受10个输入。
  2. 隔离到偶数或奇数阵列。
  3. 打印偶数/奇数阵列中的数量。
  4. 打印每个数组中的数字。
  5. 这是我制作的节目:

    #include<stdio.h>
    
    int main(){
    int even[10];
    int odd[10];
    int number;
    int numOdd = 0;
    int numEven = 0;
    int sizeOdd = 0;
    int sizeEven = 0;
    int count;
    
    printf("Input numbers:\n");
    for(count = 0; count < 10; count++){
        scanf("%d", &number);
        if (number %2 == 0){
            while (numEven < 10){
                even[numEven++] = number;
                sizeEven++;
            }
        }
        else {
            while (numOdd < 10){
                odd[numOdd++] = number;
                sizeOdd++;
            }
        }
    }
    
    printf("\n\nEven numbers(%d): ", sizeEven);
    for(number = 0; number < numEven; number++){
        printf("%d, ", even[number]);
    }
    
    printf("\n\nOdd numbers(%d): ", sizeOdd);
    for(number = 0; number < numOdd; number++){
        printf("%d, ", odd[number]);
    }
    
    system("pause");
    return 0;
     }
    

    但我的程序只输出数组中的第一个数字并重复它。就像,如果我输入1,2,3,4,5,6,7,8,9,10,我得到:

    偶数(10):2,2,2,2,2 奇数(10):1,1,1,1,1

    我对程序中的一切/我的逻辑错了吗?我是在正确的轨道上,我只需要调整一下吗?希望得到帮助!

3 个答案:

答案 0 :(得分:1)

这可能对您有所帮助:  为什么在if和else条件中添加while循环:

if (number %2 == 0){
   even[numEven++] = number;

同样even[numEven++]本身会增加numEven变量的值,不需要在下一行再次递增。

答案 1 :(得分:0)

您已使用while两次,您应该使用if。因此,您的even数组将填入输入的第一个偶数,并且您的odd数组将填充第一个奇数。

将每个while更改为if,您可能没问题,但我没有检查其他错误。例如......

if (number %2 == 0){
    if (numEven < 10){
        even[numEven++] = number;
        sizeEven++;
    }
}

while关键字定义了它自己的完整循环 - 它不是对其他类型重复的限制,例如(在这种情况下)你向每个数组添加元素。

BTW - 你真的不需要if检查。您只输入10个项目,因此最多可以向even数组添加10个项目,或向odd数组添加10个项目。由于数组足够大以容纳10个项目,因此您不需要在此代码中进行边界检查。

答案 2 :(得分:0)

while关键字定义了它自己的完整循环 - 它不是对其他类型重复的限制,例如(在这种情况下)你向每个数组添加元素。

顺便说一下 - 你真的不需要if检查。您只输入10个项目,因此最多可以添加