输入三个整数x,y,z,请把这三个数由小到大输出。。

题目:输入三个整数x,y,z,请把这三个数由小到大输出。。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;} /*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;} /*交换z,y的值*/
printf("small to big: %d %d %d\n",x,y,z);
getch();
}
请问为什么要交换x,y,z的值呵?谢谢了

先比较x,y,如果x大于y,则交换两数的值,也就是把x,y中较小的数放在x中,把较大的数放在y中。使得x<y.
再比较x和z,同样如果如果x小就不交换,如果x大于z,就交换,使得x中存放较小的那个数。
通过以上两步,使得x中存放的就是三个数中最小的数了。
再通过第三次判断,使得y中存放居中的数,z中存放最大的数,这样按x,y,z的顺序打印出来,当然就由小到大排好了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-11-24
很简单,设计这个算法人的思想是想X,Y,Z恰好是从小到大排列(从printf可以看出)。这样比较不容易出错,程序也清晰
第2个回答  2013-05-01
哥们儿,有没有不采用第三方变量的方法啊
第3个回答  2007-11-29
a
第4个回答  2007-12-05
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;} /*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;} /*交换z,y的值*/
printf("small to big: %d %d %d\n",x,y,z);
getch();
相似回答