如何显示比数组中更少的元素

时间:2017-07-29 14:27:18

标签: c arrays

我正在制作一个程序,用于从数组中分离偶数和奇数整数。我给了偶数和奇数数组3个元素但是当没有3个偶数/奇数整数时它打印出一些随机数。有没有办法定义要打印的内容。如果需要,这是代码:

P.S。我找到了问题的解决方案,但它有不同的方法,所以我只是想知道我可以这样做,如果没有,为什么?谢谢!

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
#include <time.h>

int main()
{
     int nubmers[3];
     int even[3];
     int odd[3];

     for(int i = 0; i < 3; i++)
     {
         printf("Enter %d element : ", i);
         scanf(" %d", &numbers[i]);

         if(numbers[0]%2 == 0)
         {
             even[0] = numbers[0];
         }
         else
         {
             odd[0] = numbers[0];
         }

         if(nubmers[1]%2 == 0)
         {
             even[1] = numbers[1];
         }
         else
         {
             odd[1] = numbers[1];
         }

         if(numbers[2]%2 == 0)
         {
             even[2] = numbers[2];
         }
         else
         {
             odd[2] = numbers[2];
         }
     }

     printf("Even : %d\n", even[i]);
     printf("Odd : %d\n", odd[i]);

     return 0;
}

2 个答案:

答案 0 :(得分:2)

在循环内部,你应该使用循环计数器变量i而不是固定索引012

此外,你可以计算偶数和奇数值。

最后,您可以打印偶数值列表和奇数值列表。

int main()
{
     int nubmers[3];
     int even[3];
     int odd[3];
     int noEven = 0, noOdd = 0;

     for(int i = 0; i < 3; i++)
     {
         printf("Enter %d element : ", i);
         scanf(" %d", &numbers[i]);

         if (numbers[i]%2 == 0)
             even[noEven++] = numbers[i];
         else
             odd[noOdd++] = numbers[i];
     }

    for(int i = 0; i < noEven; i++)
        printf("Even : %d\n", even[i]);
    for(int i = 0; i < noOdd; i++)
        printf("Odd : %d\n", odd[i]);

     return 0;
}  

答案 1 :(得分:1)

  

如何显示比数组中少的元素

定义任何“Not-In-Use”值并使用此值初始化数组。

“非使用中”值应该是您明确知道在程序运行期间不需要/使用的任何值。

在您的情况下,您可以采用可能的最小type(d),其定义为name

int

确保未使用“Not-In-Use”值:

INT_MIN

如果您稍后想要仅检查那些已被使用/触摸过的元素,只需遍历数组,跳过所有等于“Not-In-Use”值的元素。

#include <stdio.h> 
#include <limits.h> /* for INT_MIN */

#define NOT_IN_USE INT_MIN


int main(void)
{
  ...

  for (size_t i = 0; i < 3;: ++i)
  {
    numbers[i] = NOT_IN_USE;
    even[i] = NOT_IN_USE;
    odd[i] = NOT_IN_USE;
  }