在线编译器 C

#include <stdio.h> void sort_array(int size, int a[]) { for (int i = 0; i < size; i++) { scanf("%d", &a[i]); } } void sort_array(int size, int a[]) { for (int i = 0; i < size; i++) { int mini = i; for (int j = i + 1; j < size; j++) { if (a[mini] > a[j]) { mini = j; } } if (mini != i) { int tmp = a[i]; a[i] = a[mini]; a[mini] = tmp; } } } int main() { for (int i = 0; i < size; i++) { printf("%d", a[i]); } return 0; }
这段代码试图实现一个排序程序,但存在多个问题。首先,你定义了两个同名的 `sort_array` 函数,这会导致编译错误。其次,`main` 函数中使用了未声明的变量 `size` 和 `a`,并且没有调用排序函数。

- 在 C 语言中,不能有两个相同名称和参数列表的函数。你需要决定只保留一个 `sort_array` 定义,或者给它们不同的名字。第一个 `sort_array` 实际上是在读取输入,第二个才是排序逻辑,你应该将它们合并或分开命名。
- `main` 函数中的 `size` 和 `a` 没有定义。你需要先在 `main` 中声明数组和大小,然后调用排序函数,最后再打印结果。注意打印循环应该放在排序之后,而不是在 `main` 的开头。