我有一个任务是将整数数组排序成偶数数组和奇数数组。然后我必须显示已放置的数字。但是,在我的代码中并不是数组的所有位置都被占用,所以当我想要显示数组赔率和均值包含的内容时,我最终会收到随机数。我希望没有任何随机数字代替随机数字。
我做了以下事情:
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这样的随机数字的情况下获得赔率/偶数数组呢?是否有命令添加字面上没有?
答案 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;
}