在线编译器 C

#include <stdio.h> enum {size=10}; int main(){ int a[size]; for(int i=0;i<size;i++){ scanf("%d",&a[i]); }for(int i=0;i<size-1;i++){ int num_min=i; for(int j=i+1;j<size;j++){ if(a[num_min]%10>a[j]%10){ num_min=j; } } if(num_min!=i){ int temp=a[num_min]; a[num_min]=a[i]; a[i]=temp; } }for(int i=0;i<10;i++){ printf("%d ",a[i]); } return 0; }
这段代码实现了一个选择排序算法,但排序的依据是每个整数的个位数(通过 `%10` 获取)。程序读取10个整数,然后按它们的个位数从小到大排序,最后输出排序后的数组。

- 代码中 `for(int i=0;i<10;i++)` 这一行使用了硬编码的 `10`,而数组大小是通过枚举常量 `size` 定义的。建议统一使用 `size` 来保持一致性,避免当 `size` 改变时遗漏修改。
- 排序逻辑只比较了个位数,如果两个数的个位数相同,它们的相对顺序可能会不稳定。想一想,当个位数相等时,你是否希望保持它们原有的顺序?如果需要,可以考虑在比较条件中加入对数值本身的比较。