Онлайн компилятор C

#include <stdio.h> void sort_array(int n, int a[]) { int temp[1000]; int pos = 0; for (int i = 0; i < n; i++) { if (a[i] % 2 == 0) { temp[pos++] = a[i]; } } for (int i = 0; i < n; i++) { if (a[i] % 2 != 0) { temp[pos++] = a[i]; a[i] = a[mini]; } } a[mini] = tmp; for (int i = 0; i < n; i++) { a[i] = temp[i]; } } int main() { printf("Hello, World!\n"); return 0; }
这段代码试图实现一个将数组中的偶数移到前面、奇数移到后面的排序函数。但代码中存在一些错误和不完整的部分。

- 在第二个循环中,你使用了未定义的变量 `mini` 和 `tmp`,这会导致编译错误。看起来你可能是想实现某种交换逻辑,但这里不需要交换,因为已经用 `temp` 数组存储了结果。
- 函数 `sort_array` 虽然定义了,但在 `main` 函数中并没有被调用,所以程序只是打印了一句话就结束了。

- 检查第二个循环中是否真的需要 `a[i] = a[mini];` 和 `a[mini] = tmp;` 这两行。你的思路是用 `temp` 数组收集所有元素,最后再复制回原数组,所以中间不应该修改原数组。
- 确保所有变量在使用前都已声明。`mini` 和 `tmp` 没有定义,需要明确它们的用途或直接删除相关行。