核心算法:
借助于中间变量,使3个变量中存放的数据两两比较,两两交换,先确定一个最值,再比较另外两个的大小,使最终a中存放的数值最小,c中存放的数值最大,则按a,b,c的顺序输出就是按3个数升序排列。
注意:
因为C程序整体上是顺序结构,而3个数总共有三次两两比较,往往是先确定三者中的一个最值,再比较另外两个的大小比较简单。
所以前两次必须实现将最小的数据存放到a中或者将最大的数据存放到c中,即前两次的比较必须都含有a>或者c<,那么无论前两个if条件判断语句是否执行,都会有a里面存放的数据为最小值或者c里面存放的数据为最大值。
例:任意输入3个整数,编程实现对这3个整数由小到大进行排序,并将排序后的结果显示在屏幕上。
#include<stdio.h>
int main()
{
int a,b,c,t;
printf("Please input a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b)/*如果a大于b,借助中间变量t实现a与b值的互换,无论是否执行,都有a<b*/
{
t=a;
a=b;
b=t;
}
if(a>c)/*如果a大于c,借助中间变量t实现a与c值的互换,无论是否执行都有a<c*/
{
t=a;
a=c;
c=t;
}
if(b>c)/*如果b大于c,借助中间变量t实现b与c值的互换,无论是否执行,都有b<c*/
{
t=b;
b=c;
c=t;
}
printf("The order of the number is %d,%d,%d\n",a,b,c);
return 0;
}