【问题标题】:How to add 'nothing' into int array in C如何在 C 中将“无”添加到 int 数组中
【发布时间】:2017-01-08 03:55:10
【问题描述】:

我的任务是将整数数组排序为偶数数组和奇数数组。然后我必须显示哪些数字已放置在其中。但是,在我的代码中,并非数组的所有位置都被占用,所以最后当我想显示数组奇数和偶数包含的内容时,我会收到随机数。而不是随机数,我希望在它们的位置上没有添加任何内容。

我做了以下事情:

int main()
{
   int evens[10], whole[10], odds[10], i;

   printf("Enter 10 integer(/whole) numbers\n");
   for (i = 0; i < 10; i++)
   {
      scanf("%d", &whole[i]);
      if (whole[i] % 2 == 0)
      {
      evens[i] = whole[i]; 
      else odds[i] = whole[i];
      }
   }

   printf("Your even numbers are the following:\n");
   for (i = 0; i < 10; i++)
   {
      printf("%d\n", evens[i]);
   }

   printf("Your odd numbers are the following:\n");
   for (i = 0; i < 10; i++)
   {
      printf("%d\n", odds[i]);
   }

return 0;
}

然后我得到这个输出,因为我输入了从 1 到 10 的数字:

  Your even numbers are the following:
    -1832565259
    2
    1985901418
    4
    4200864
    6
    4200958
    8
    74
    10

    Your odd numbers are the following:
    1
    4200864
    3
    6356652
    5
    1986281400
    7
    1985964450
    9
    1985901427

那么,如果没有像 1985964450 这样的随机数字,我如何获得一个奇数/偶数数组?是否有一个命令可以直接添加任何内容?

【问题讨论】:

  • C 中的值就是 - 值。 C 中没有“null”之类的东西 - 而是您解释值的方式。在您的情况下,您必须决定如何将一个值存储为 interpreted 为空。如果所有实数都同样有效,那么您将需要一个 second 值来表示某事物是否为“空”。

标签: c arrays


【解决方案1】:

你应该有一个赔率计数器和一个偶数计数器。

int oddcount = 0;
int evencount = 0;

当您确定一个数字是偶数时,您可以使用此计数器来了解它应该在数组中的哪个位置。例如:

if (whole[i] % 2 == 0) {
    evens[evencount] = whole[i];
    evencount++;
}

请注意,evencount 不仅为您提供偶数的数量,而且由于数组索引从零开始,它还告诉您下一个偶数的位置。

然后,您在最后修改 for 循环以使用输入的偶数和奇数的实际数量。您甚至可以检查零并打印特定消息,例如No even numbers supplied

此外,除非您被明确要求将输入数字保存在数组中,否则您不需要whole。你可以这样做:

int input;
for (i=0; i<10; i++)
{
    scanf("%d", &input);
    if (input %2 == 0)
        /* ... */
    else
        /* ... */
}

最后,您应该缩进您的代码。缩进只是增加代码前的空格数(就像我在上面的ifs 中所做的那样)。缩进代码非常重要,因为它使代码结构清晰。如需对此进行更全面的讨论,请在此处阅读:Importance of code indentation

【讨论】:

    【解决方案2】:

    最好有两个表示索引的变量,一个用于添加奇数,另一个用于添加偶数。然后你将有两个没有冗余数据的数组:)

    int evensIndex = 0;
    int oddsIndex = 0;
    for (i=0; i<10; i++)
    {
        scanf("%d", &whole[i]);
    
        if (whole[i] %2 == 0)
        {
            evens[evensIndex] = whole[i];
            evensIndex++;
        }
        else 
        {
            odds[oddsIndex] = whole[i];
            oddsIndex++;
        }
    }
    

    【讨论】:

      【解决方案3】:
      int main()
      {
      int evens[10], temp, odds[10], i;
      int oddIndex = 0, evenIndex = 0;
      
      printf("Enter 10 integer(/whole) numbers\n");
      for (i=0; i<10; i++)
      {
         scanf("%d", &temp);
         if(temp%2)
            odd[oddIndex++]=temp;
         else
            even[evenIdex++]=temp;
      }
      
      printf("Your even numbers are the following:\n");
      for (i=0; i<10; i++)
        printf("%d\n", evens[i]);
      
      printf("Your odd numbers are the following:\n");
      for (i=0; i<10; i++)
        printf("%d\n", odds[i]);
      
      return 0;
      }
      

      【讨论】:

        猜你喜欢
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多