Онлайн компилятор 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[]); return 0; }
这段代码有两个主要问题:一是函数 `sort_array` 被定义了两次,二是 `main` 函数中试图打印数组但语法错误。

- 你定义了两个同名的 `sort_array` 函数,这是不允许的。第一个函数用来读取输入,第二个函数用来排序。你需要把这两个功能合并到一个函数里,或者给它们起不同的名字。
- 在 `main` 函数中,`printf("%d", a[])` 的写法是错误的。`a[]` 不是合法的变量名,而且你也没有在 `main` 里声明数组 `a`。你需要先在 `main` 中声明一个数组,然后调用排序函数来处理它,最后用循环逐个打印数组元素。