马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
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
|