输入 a 和b两个整数,按先大后小的顺序输出 a 和b

#include <stdio.h>
main(){
int *p1,*p2,*p,a,b;
printf("enter tow number:\n ");
scanf("%d\n,%d",&a,&b);
p1=&a;p2=&b;
if(a<b)
{p=p1;p1=p2;p2=p;}
printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",*p1, *p2);
}
其中 {p=p1;p1=p2;p2=p;} 啥意思!?各位高手教教我!!!

p是一个暂存的中间数,a<b就是p1<p2,所以更换了一下p1和p2指向的值。
先将p1赋值给p,再将p2赋值给p1,然后将p赋值给p2,则p1和p2的值实现了交换,p1>p2,就可以输出了。
其实完全可以将最后语句改成
printf("max=%d,min=%d\n",*p2, *p1);
或者if语句改成if(a>b)
都可以去掉{p=p1;p1=p2;p2=p;}这个赋值语句。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-15
交换,数值
相似回答