鱼C论坛

 找回密码
 立即注册
查看: 1217|回复: 8

[已解决]求大哥帮助!

 关闭 [复制链接]
抢楼 抢楼 本帖为抢楼帖,欢迎抢楼! 
发表于 2021-12-11 16:35:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int main()
{
        int a, b, c, t;

        printf("请输入3个整数(使用空格隔开):");
        scanf("%d%d%d", &a, &b, &c);

        if (a > b)
        {
                t = a;
                a = b;
                b = t;
        }

        if (a > c)
        {
                t = a;
                a = c;
                c = t;
        }

        if (b > c)
        {
                t = b;
                b = c;
                c = t;
        }

        printf("%d %d %d\n", a, b, c);

        return 0;
}
这是什么意思啊,兄弟们

              if (a > b)
        {
                t = a;
                a = b;
                b = t;
        }

        if (a > c)
        {
                t = a;
                a = c;
                c = t;
        }

        if (b > c)
        {
                t = b;
                b = c;
                c = t;
        }

     
最佳答案
2021-12-12 21:35:10
这个就是经典的换杯算法啊,把a,b,t看成三个杯子,实现a和b杯子的交换。我们需要一个中间介质t。一开始a,b杯子里都有水,t是空的。我把a的水倒进t里,a杯空了。再把b杯的水倒进a里,b杯空了。最后把t杯的水倒进a里,实现了a与b杯子的交换。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-11 16:44:04 | 显示全部楼层
a>b   a和b数值交换
a>c   a和c数值交换
b>c   b和c数值交换
达到a、b、c从小到大排序功能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-12-11 17:01:54 | 显示全部楼层
jhq999 发表于 2021-12-11 16:44
a>b   a和b数值交换
a>c   a和c数值交换
b>c   b和c数值交换

能详细的吗
t = a;
     a = b;
   b = t;
不理解这个东西是怎么操作的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-11 17:17:07 | 显示全部楼层
何艺铧 发表于 2021-12-11 17:01
能详细的吗
t = a;
     a = b;

a,b,c是你用键盘输入的,而t没有给它赋值,那么t现在就是空的
而"="是赋值运算符,把右边的值赋值给左边,
那么
t = a;
a = b;
b = t;
就是说先把a值赋给t,然后a里面为空,t里面就存放了a原先的值,b = a;就把b值赋给空的a,b就相当于空了,最后把t里面的a值赋给b,达到a和b数值交换的结果,t充当了交换的桥梁,同理,a和c,b和c也一样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-11 18:08:14 | 显示全部楼层
简单来说是a 和b 的数据之间交换,中间要有介质t 来保存其中一个数据,防止数据丢失
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-11 18:29:48 | 显示全部楼层
本帖最后由 jackz007 于 2021-12-11 18:32 编辑

        执行完下面的代码,可以保证 a < b && a <  c ,就是说,在 a、b、c 中,a 一定是最小的那一个。
        if (a > b)
        {
                t = a;
                a = b;
                b = t;
        }

        if (a > c)
        {
                t = a;
                a = c;
                c = t;
        }
        前面的代码已经确定在 a、b、c  中,a 最小,那么,执行完下面的代码便可以保证 b < c
        if (b > c)
        {
                t = b;
                b = c;
                c = t;
        }
         于是,a < b < c 的关系便得到了确立。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-11 19:04:30 | 显示全部楼层
何艺铧 发表于 2021-12-11 17:01
能详细的吗
t = a;
     a = b;

有两个只能装一个苹果的盒子,只能用一只手把两个苹果交换放在对方所在的盒子里,所以需要再要一个新盒子,把盒子A的苹果放在新盒子T里,然后把盒子B的苹果放在盒子A里,最后把暂存在新盒子T的苹果放在盒子B里,交换完成
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-12 10:33:23 | 显示全部楼层
何艺铧 发表于 2021-12-11 17:01
能详细的吗
t = a;
     a = b;

实在不能理解的话列数字吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-12 21:35:10 | 显示全部楼层    本楼为最佳答案   
这个就是经典的换杯算法啊,把a,b,t看成三个杯子,实现a和b杯子的交换。我们需要一个中间介质t。一开始a,b杯子里都有水,t是空的。我把a的水倒进t里,a杯空了。再把b杯的水倒进a里,b杯空了。最后把t杯的水倒进a里,实现了a与b杯子的交换。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-9 21:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表