Online Compiler C

#include <stdio.h> void sort_array(int size, int a[]) { for (int i = 0; i < size; i++) { for (int j = i + 1; j < size; j++) { if (a[i] > a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } } for (int i = 0; i < size; i++) { while (a[i] == a[i + 1]) { i++; } printf("%d", a[i]); } } int main() { return 0; }
这段代码定义了一个排序函数 `sort_array`,它使用选择排序法对数组进行升序排列,然后尝试打印去重后的结果。但主函数 `main` 直接返回了0,没有调用这个函数,所以程序实际上什么也不做。

- 你的 `sort_array` 函数里,排序部分是正确的,但打印去重的逻辑有问题。当 `i` 到达数组最后一个元素时,`a[i+1]` 会访问越界,导致未定义行为。你需要考虑如何安全地比较相邻元素,避免访问超出数组范围。

- 另外,主函数 `main` 中没有调用 `sort_array`,也没有定义任何数组。你需要创建一个数组并调用排序函数,才能看到输出结果。