在线编译器 C

#include <stdio.h> int main() { 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[]); return 0; }
这段代码有几个问题。首先,你在 `main` 函数内部定义了两个同名的 `sort_array` 函数,这在C语言中是不允许的。其次,你试图在 `main` 函数内定义函数,但C语言不支持嵌套函数定义。另外,最后的 `printf` 试图打印 `a[]`,但 `a` 并没有在 `main` 中定义,而且语法也不正确。

- 函数定义应该放在 `main` 函数之外,而不是嵌套在 `main` 里面。你需要把 `sort_array` 的定义移到 `main` 前面或后面,但不要放在 `main` 的花括号内。
- 在 `main` 中,你需要先声明一个数组,然后调用 `sort_array` 来排序它,最后用循环打印数组元素,而不是直接写 `printf("%d", a[])`。