本题要求将输入的任意3个整数从小到大输出。
输入格式:
输入在一行中给出3个整数,其间以空格分隔。
输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。
输入样例:
4 2 8
结尾无空行
输出样例:
2->4->8
结尾无空行
分析:
此题本身其实不难,但是理解了此题的意义,那么对于后续排序算法的理解会有所帮助。
采用冒泡排序的核心思想,也就是相邻两个数互相对比,大的数往后,对比三次就可以得到正确的顺序。
代码如下:
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int t;
if(a >b)
{
t=b;
b=a;
a=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(a >b)
{
t=b;
b=a;
a=t;
}
printf("%d->%d->%d",a,b,c);
return 0;
}
三个数字的排序可能还不够清楚,下面用四个数字的排序来表示详细过程,代码如下:
#include<stdio.h>
int main()
{
int a,b,c,d;
scanf("%d %d %d %d",&a,&b,&c,&d);
int t;
if(a >b)
{
t=b;
b=a;
a=t;
}
if(b >c)
{
t=b;
b=c;
c=t;
}
if(c >d)
{
t=c;
c=d;
d=t;
}//结束到此处是第一轮两两比较,最后的是最大的数
if(a >b)
{
t=b;
b=a;
a=t;
}
if(b >c)
{
t=b;
b=c;
c=t;
}//结束到此处是第二轮两两比较,第二个是倒数第二大的数
if(a >b)
{
t=b;
b=a;
a=t;
}//结束到此处是第三轮两两比较,第三个是倒数第三大的数
printf("%d->%d->%d->%d",a,b,c,d);
return 0;
}
|