何艺铧 发表于 2021-12-11 16:35:45

求大哥帮助!

#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;
      }

   

jhq999 发表于 2021-12-11 16:44:04

a>b   a和b数值交换
a>c   a和c数值交换
b>c   b和c数值交换
达到a、b、c从小到大排序功能

何艺铧 发表于 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;
不理解这个东西是怎么操作的。

小亦003 发表于 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也一样。

a327904410 发表于 2021-12-11 18:08:14

简单来说是a 和b 的数据之间交换,中间要有介质t 来保存其中一个数据,防止数据丢失

jackz007 发表于 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 的关系便得到了确立。

jhq999 发表于 2021-12-11 19:04:30

何艺铧 发表于 2021-12-11 17:01
能详细的吗
t = a;
   a = b;


有两个只能装一个苹果的盒子,只能用一只手把两个苹果交换放在对方所在的盒子里,所以需要再要一个新盒子,把盒子A的苹果放在新盒子T里,然后把盒子B的苹果放在盒子A里,最后把暂存在新盒子T的苹果放在盒子B里,交换完成

Gacy 发表于 2021-12-12 10:33:23

何艺铧 发表于 2021-12-11 17:01
能详细的吗
t = a;
   a = b;


实在不能理解的话列数字吧

恶魂稽 发表于 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杯子的交换。
页: [1]
查看完整版本: 求大哥帮助!