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

#include <stdio.h> void sort_array(int size, int a[]) { for(int i = 0; i < size; i++) { scanf ("%d", &a[i] ); } for(int i = 0; i < size; i++) { int min = i; for( int j = i+1; j < size-1; j++) { if(a[j] < a[i]) { min = j; } } int tem = a[i]; a[i] = a[min]; a[min] = tem; } for( int i = 0; i < size; i++) { printf("%d ", a[i]); } return; } int main() { sort_array(20,a); return 0; }
这段代码试图实现一个排序函数,但存在几个问题。函数 `sort_array` 内部混合了输入、排序和输出,而 `main` 函数中调用时使用了未定义的数组 `a`。

- 在 `main` 函数中,你使用了变量 `a`,但并没有声明它。你需要先定义一个数组,比如 `int a[20];`,然后再调用 `sort_array` 函数。
- 排序部分的内部循环条件 `j < size-1` 可能不正确。通常选择排序的内层循环应该遍历到 `size`,而不是 `size-1`,否则最后一个元素可能不会被正确比较。另外,比较时应该用 `a[j] < a[min]` 而不是 `a[j] < a[i]`,因为 `min` 才是当前最小值的下标。