题目:输入三个整数,从小到大排序后输出。
样例输入:20 7 33
样例输出:7 20 33
分析:
解决这道题的方法有很多种,这里主要阐述两种方法,其一:
#include <stdio.h>
int main(){
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a > b){
t = a;a = b;b = t;
}
if(a > c){
t = a;a = c;c = t;
}
if(b > c){
t = b;b = c;c = t;
}
printf("%d %d %d",a,b,c);
return 0;
}
先比较a和b的大小,此时必有a小于等于b,再比较a和c的大小,此时必有a小于等于c,此时a是这三个数中最小的,反观b和c,此时这两个数的大小是不确定的,那么最后一步就应该比较b和c的大小,此时必有b小于等于c,前面又有a小于等于b,所以有a小于等于c,那么这时排序就完成了。
其二:
#include <stdio.h>
int main()
{
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a > b){
t = a;a = b;b = t;
}
if(b > c){
t = b;b = c;c = t;
}
if(a > b){
t = a;a = b;b = t;
}
printf("%d %d %d",a,b,c);
return 0;
}
先比较a和b的大小,此时必有a小于等于b,再比较b和c的大小,此时必有b小于等于c,此时c是这三个数中最大的,反观a和b,此时这两个数的大小是不确定的,那么最后一步就应该比较a和b的大小,此时必有a小于等于b,又因为c此时是最大的,所以这时排序就完成了。