在线编译器 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() { printf("%d", a[i]); return 0; }
这段代码存在多个问题。首先,`sort_array` 函数被定义了两次,这是不允许的。第一次定义中,函数读取输入到数组,第二次定义中,函数对数组进行选择排序。另外,`main` 函数中试图打印 `a[i]`,但 `a` 和 `i` 都没有定义。

- 注意函数不能重复定义。你需要合并两个 `sort_array` 的功能,或者分别用不同函数名实现读取和排序。
- 在 `main` 函数中,你需要先声明一个数组,然后调用函数来填充和排序它,最后用循环打印数组元素,而不是直接使用未定义的变量。