sakuro 发表于 2021-3-19 15:50:54

不是很理解,求大佬能稍详细地解释下

这是课堂练习题,我不太明白为什么这么编写就能达到目的。
从for(j=1;j<11-i;j++)开始不能理解
求大佬能稍详细地解释下
非常感谢!

题目:编写一个程序,对任意10个整数从低到高排序并输出。

#include <stdio.h>
int main()
{
        int i,j,t;
        int a;
        printf("请输入10个整数:\n");
        for(i=1;i<11;i++)
        {
        scanf("%d",&a);
        }
        for(i=1;i<10;i++)
        {
                for(j=1;j<11-i;j++)
                {
                        if(a>a)
                        {
                                t=a;
                                a=a;
                                a=t;
                        }
                }
        }
        printf("排序:\n");
        for(i=1;i<=10;i++)
        {
                printf("%5d",a);
        }
        return 0;
}

Janus 发表于 2021-3-19 16:35:01

你可以看看这篇文章的动图:https://www.jianshu.com/p/c5e0478afa86
祝好

巴巴鲁 发表于 2021-3-19 16:43:22

看看这个,要真讲我讲不来,随便一个人讲的都比我好
其实说简单些就是让最小的放在最前面,第二小的放在第二个位置......
https://blog.csdn.net/ysjian_pingcx/article/details/8656048

noah-py 发表于 2021-3-20 11:10:04

{:10_247:}

1406598279 发表于 2021-3-20 11:38:52

额,我也不理解

yixinwenxin 发表于 2021-3-20 22:14:59

j=1 , j<11,j++
第一个是赋值
第二个是判断J的值是否>11
j++是每次循环结束j自+1
直到j的值>11时,不再执行循环

shiwobuhaoma 发表于 2021-3-20 22:39:56

写的挺有意思的,i,j都是从1开始。a的位置一直空置着。
如果你想搞明白,是怎么回事,你最好自己尝试debug单步走一遍,或者把2个数字替换一下位置后,把这个替换后的结果打印出来看一遍,不就清楚了吗?

3102515355 发表于 2021-3-21 11:23:30

{:5_103:}

1073551873 发表于 2021-3-21 11:23:43

{:5_100:}

411431402 发表于 2021-3-21 11:23:52

1908496509 发表于 2021-3-21 11:24:02

{:5_103:}

3553107168 发表于 2021-3-21 11:24:21

{:5_103:}

rt3 发表于 2021-3-21 22:12:37

{:9_219:}
页: [1]
查看完整版本: 不是很理解,求大佬能稍详细地解释下