输入三个数字,将三个数字按从大到小的顺序输出(两种解法)

时间:2022-12-21 16:59:21

法一:全用if,由于题目只输入输出三个数字,情况较少,可以用if一一罗列出来,即如果a最大、如果b最大、如果c最大的情况

#include<stdio.h>
int main()
{
int a,b,c;
printf("请输入三个数字:");
scanf("%d %d %d",&a,&b,&c);
if(a>b&&b>c)
{
printf("从大到小排列:%d %d %d",a,b,c);
}
if(a>b&&b<c)
{
if(a>c)
{
printf("从大到小排列:%d %d %d",a,c,b);
}
else
{
printf("从大到小排列:%d %d %d",c,a,b);
}
}
if(a<b&&b<c)
{
printf("从大到小排列:%d %d %d",c,b,a);
}
if(a<b&&b>c)
{
if(a>c)
{
printf("从大到小排列:%d %d %d",b,a,c);
}
else
{
printf("从大到小排列:%d %d %d",b,c,a);
}
}
return 0;
}

运行结果:

输入三个数字,将三个数字按从大到小的顺序输出(两种解法)

注:不要将情况考虑掉了,要理清思路

法二:

算法实现:a中放最大值;b次之;中放最小值

#include<stdio.h>
int main()
//算法实现:a中放最大值;b次之;中放最小值
{
int a,b,c;
printf("请输入三个数:");
scanf("%d %d %d",&a,&b,&c);
if(a<b)
{
int tem=a;
a=b;
b=tem;
}
if(a<c)
{
int tem=a;
a=c;
c=tem;
}
if(b<c)
{
int tem=b;
b=c;
c=tem;
}
printf("%d %d %d",a,b,c);
return 0;
}

1.由于只需要对三个数进行排列,比较三个数之间的大小并进行排序,所以思考一下,需明白只需要比对三次这之间的大小就可以得出结果:及a与b、a与c和b与c

2.为使该运算更清晰,我们引入了第三个变量“tem”将不合题目要求的数字给替换掉

即用如图来表示将位置调换

输入三个数字,将三个数字按从大到小的顺序输出(两种解法)