我试着把偶数(第一个)然后奇数推入同一个数组(1到N)。这里我试着先推入偶数,但做不到。有人能帮我吗?数组应该是这样的{2,4,6,8,10,1,3,5,7,9)。这里n = 10
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int array[n];
for (int i = 0; i < n; i++)
{
if (i % 2 == 0)
{
array[n] = i;
}
}
for (int i = 0; i < n; i++)
{
printf("%d\n", array[i]);
}
return 0;
}
}
我试着把偶数先放到数组里,但是我失败了
1条答案
按热度按时间xbp102n01#
这其实是一个非常简单的问题。正如其他人所指出的,你的大问题是给数组赋值越界。让我们通过硬编码
n
来避开I/O问题(总是检查scanf
的返回值)。在迭代过程中,我们只需要根据数组的奇数或偶数来偏移数组的索引,奇数从索引
n / 2
开始,然后加上i / 2
,这可以简化为(i + n) / 2
。对于偶数,我们只需要除以2就可以得到指数。
考虑
3
:我们知道它应该在索引6
处结束(3 + 10) / 2
=〉13 / 2
=〉6
或者4``4 / 2
=〉2
。