写这题的时候花了很多时间去理解,最后终于弄懂了,还写了一张流程图来看,也写出了一个易于初学者理解的代码,本身自己能力也菜,所以从简单和容易理解出发就完事了。
#include <stdio.h> int main() { int arr[40] = { 0 }; int n = 0; int temp = 0; scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d", &arr[i]); } for(int i = 0; i < n - 1; i++) //以三个来举例,对比的话肯定是只要对比两次就可以完成目标 //所以我们写 i < n -1 当然 你写成 i < n 也不算你错,就是多运行一次。 { for(int j = i + 1; j < n; j++) //我们是想实现arr[0]开始比较后面的数 //所以我们写j = i + 1即可 { if(arr[i] < arr[j]) { temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } } for(int i = 0; i < 5; i++) //这里也可以直接写五个printf("%d",arr[i])从0开始的arr数组 //但是我觉得有点麻烦我就直接写for循环了 { printf("%d ", arr[i]); } return 0; }