我正在学习用C语言编写代码,我需要创建一个程序,该程序首先将数组中的数字按偶数排序,然后按不均匀数排序。数字不必从小到大排序。第一个输入的数字应该是数组的大小。我设法弄清楚了,但始终缺少一个数字,并提供了一个随机数。我想念什么吗?
int a[101], a2[101], i, j, n, k = 0;
scanf ("%d", &n);
for (i = 0; i < n; i++)
scanf ("%d", &a[i]);
for (i = 0; i < n; i++)
{
if (a[i]%2 == 0)
{
if (a[i] == 0)
{
a2[k] = a[i];
k++;
continue;
}
a2[k] = a[i];
k++;
}
}
for (i = 0; i < n; i++)
{
if (a[i]%2 != 0)
{
a2[k] = a[i];
k++;
}
}
for (i = 0; i < n; i++)
printf ("%d ", a2[i]);
return 0;
我输入以下数字:
6
1 3 2 5 8 10
我应该得到: 2 8 10 1 3 5
我得到的是: 2 8 10 1 3 508
我也尝试了其他组合,问题仍然存在,但数字不同。
答案 0 :(得分:1)
几次检查您的代码,使其编写得很好,并且效果也很好。 5 之后的多余的 08 可能由其他内容打印。在打印 ara2 的所有元素之后,可以使用换行符来确保 08 是从 ara2 的任何元素中打印出来的。像这样:
for (i = 0; i < n; i++)
printf ("%d ", a2[i]);
printf("\n");
还有一件事。无需在代码中添加波纹管部分。即使您不添加此代码,其代码也一样。
if (a[i] == 0)
{
a2[k] = a[i];
k++;
continue;
}
快乐编码。