| 
#include <stdio.h>
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 int main(void)
 {
 int a, b, c, t;
 int *pa, *pb, *pc;
 
 printf("请输入三个数:");
 scanf("%d%d%d", &a, &b, &c);
 
 pa = &a;
 pb = &b;
 pc = &c;
 
 if (a > b)
 {
 t = *pa;
 *pa = *pb;
 *pb = t;
 }
 
 if (a > c)
 {
 t = *pa;
 *pa = *pc;
 *pc = t;
 }
 
 if (b > c)
 {
 t = *pb;
 *pb = *pc;
 *pc = t;
 }//这三个if语句里面的内容没有看懂,求解释
 
 printf("%d <= %d <= %d\n", *pa, *pb, *pc);
 printf("%d <= %d <= %d\n", a, b, c);
 
 return 0;
 }
 
 本帖最后由 临时号 于 2022-7-9 17:37 编辑 
 当a=3,b=2,c=1时
 因为a>b成立
 所以首先,将pa所指向的地址的值赋值给了t,此时t=3,*pa=3,*pb=2,*pc=1
 然后,将pb所指向的地址的值放到了pa所指向的地方,此时*pb=2,*pa=2,*pc=1,t=3
 然后,将t的值放到pb所指向的地方,此时t=3,*pb=3,*pa=2,*pc=1
 第一个if执行后,此时*pa=2,*pb=3,*pc=1,t=3
 因为a>c成立
 所以首先,将pa所指向的地址的值赋值给了t,此时t=2,*pa=2,*pb=3,*pc=1
 然后,将pc所指向的地址的值放到了pa所指向的地方,此时*pc=1,*pa=1,*pb=3,t=2
 然后,将t的值放到pc所指向的地方,此时t=2,*pc=2,*pa=1,*pb=3
 第二个if执行后,此时*pa=1,*pb=3,*pc=2,t=2
 因为b>c成立
 所以首先,将pb所指向的地址的值赋值给了t,此时t=3,*pb=3,*pa=1,*pc=2
 然后,将pc所指向的地址的值放到了pb所指向的地方,此时*pc=2,*pb=2,*pa=1,t=3
 然后,将t的值放到pc所指向的地方,此时t=3,*pc=3,*pb=2,*pa=1
 第三个if执行后,此时*pa=1,*pb=2,*pc=3,t=3
 所以输出:
 1 <= 2 <= 3
 |