|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
int main()
{
int i, j, t;
int a[10];
printf("请输入十个数:");
for (i = 0; i < 10; i++)
scanf_s("%d", &a[i]);
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10; j++)
if (a[i] < a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf("从大到小排序后:\n");
for (i = 0; i < 10; i++)
printf("%d\t", a[i]);
return 0;
}
本帖最后由 wnhuiyou 于 2020-11-11 10:32 编辑
首先定义三个变量,再定义一个数组,一般数组下标是从0开始,所以你定义的这个 a[10] 你就简单理解为 11个杯子(实际用到的只有10个),然后下面你循环10次来进行输入数字,你又可以简单理解为,把输入的数字分别放到十个杯子里,比如(分号左边是输入的数字,右边是杯子的编号):1:0,3:1 , 2:2 , 4:3 , 8:4 , 6:5 , 5:6 , 9:7 , 22:8 , 55:9
接着进入循环套循环,先从里面开始,i=0 所以 j=0+1 进入内循环,判断a[0] < a[1] ,通过上面输入的数字存在的杯子中 得知 a[0] = 1 a[1]=3 所以 1 小于 3,成立,进入排序,t变量,你就简单理解为一个不同颜色的杯子,用来中转的,已知 t = a[0] = 1 所以 t=1,把1放在t的杯子等待中转, 这时候 a[0] = 是空杯子 所以 a[j] = a[1] = 3 把3放到a[I]这个杯子里这时 a[j] 是空杯子,最后把 t里面的数字1,放到 a[j]杯子里,第一阶段的排序结束,回到 j++ 这时 j 变成2, 然后有进入判断,如上面步骤以此类推,直到 j=10 时判断不成立,退出内循环,回到 i++ i 变成 1 , 又接着进入内循环,如上步骤。
最后一个for 其实就是遍历的意思了,也就是说,上面的循环都结束后,此时,那十个杯子中里面的数字已经发生变化了,通过for来进行把下标为 a[0] -- a[9] 里面的数字都打印出来。
|
|