| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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] 里面的数字都打印出来。 
 
 
 |   
 
 
 
 |