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 (i < size - 2 && a[i] == a[i + 1]) { i++; } printf("%d", a[i]); } } int main() { return 0; }
这段代码定义了一个排序函数 `sort_array`,它使用选择排序对整数数组进行升序排列,然后尝试打印去重后的结果。但主函数 `main` 中并没有调用这个函数,所以程序实际上什么也不做。

- 你的 `sort_array` 函数同时做了排序和打印两件事,这通常不是好的设计。函数应该只负责排序,打印应该在调用它的地方完成。
- 在打印部分的 `while` 循环中,你试图跳过重复元素,但修改了循环变量 `i`,这可能会干扰外层 `for` 循环的正常执行,导致某些元素被跳过或重复打印。考虑如何在不改变循环控制变量的情况下处理重复值。