如何在C

时间:2017-01-07 18:14:21

标签: c arrays

我有一个任务是将整数数组排序成偶数数组和奇数数组。然后我必须显示已放置的数字。但是,在我的代码中并不是数组的所有位置都被占用,所以当我想要显示数组赔率和均值包含的内容时,我最终会收到随机数。我希望没有任何随机数字代替随机数字。

我做了以下事情:

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这样的随机数字的情况下获得赔率/偶数数组呢?是否有命令添加字面上没有?

3 个答案:

答案 0 :(得分:3)

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

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
        /* ... */
}

作为最后的评论,您应该缩进代码。缩进只是在代码之前增加空格的数量(就像我在上面if中所做的那样)。缩进代码非常重要,因为它可以使代码结构清晰。有关此问题的更全面的讨论,请阅读:Importance of code indentation

答案 1 :(得分: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++;
    }
}

答案 2 :(得分:1)

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;
}