|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
作业答案的代码如下
不理解的点是,为什么是 if (a > b), if (a > c), if (b > c)
而不是 if (*pa > *pb), if (*pb > *pc) ,if (*pa > *pb),即采用两两比较的方法
还有就是用a、b、c作为判断的依据,但是交换的时候却是交换*pa,*pb,*pc的值,那么进行判断的则一直是a、b、c原来的值,而并不是随着每次判断大小后交换的值,再进行后续的判断,请问这是为什么呢 ?
#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;
}
printf("%d <= %d <= %d\n", *pa, *pb, *pc);
printf("%d <= %d <= %d\n", a, b, c);
return 0;
}
本帖最后由 superbe 于 2019-10-7 10:57 编辑
*pa,*pb,*pc分别和a,b,c是同一个内存空间,还要赋值干什么,修改了*pa,*pb,*pc就分别等于了修改了a,b,c,反过来也是的。
|
|