C语言中,怎么比较三个数的大小??

请给我详细讲解一下

比较方法:
1、比较从第一个数开始,先比较第一个数和第二个数的大小,如果第一个数大于第二个数,则将第一个数和第二个数互换;不大于(即等于或小于)则不作处理。
2、然后,再将第二个数和第三个数比较,同样,若大于则将它们互换。
以1
2
3为例
先考虑我们所有的可能输入类型(这里不一一列举):1
2
3;3
2
1
;2
1
3;1
1
1;1
2
2;1
2
1;整体的思路为输入三个数后,我们从中取两个数,在这两个数中选出最大的后将最大的数与第三个数做差比较这里请参考代码理解;
代码:
#include<stdio.h>
int
comp(int
x,int
y)
{
return
x>y?x:y;
}
int
main()
{
int
i,j,k;
int
a,b,c;
scanf("%d
%d
%d",&a,&b,&c);
j=comp(a,b);//j为两个数里最大的值
k=c;//a+b-j求的是a,b里比较小的那个数;
if(j-k<0){printf("%d
%d
%d",k,j,a+b-j);return
0;}
//说明K最大按顺序输出就可以了1
2
3;2
2
3
if(j-k>=a+b-j){printf("%d
%d
%d",j,a+b-j,k);return
0;}//3
2
1
if(j-k<a+b-j){printf("%d
%d
%d",j,k,a+b-j);return
0;}//
3
2
3
}
总结:
其实这个代码本质也和用if语句比较大小排序差不多,只不过这里不需要每次都调用三个if语句,直接一条if语句便可输出答案效率更高一点。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-12
输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,
然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:
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 %dn",x,y,z);
}本回答被提问者采纳
第2个回答  2019-02-02
#include<stdio.h>
/*
这才是三个数的比较*/
int
main()
{
float
a,
b,
c;
float
d=0;
float
e=0;
float
max=0;
printf("输入三个数字\n");
scanf_s("%f\n%f\n%f",&a,&b,&c);
if(d=a>b?a:b)
if(e=b>c?b:c)
if(max=d>e?d:e)
printf("三个数的最大值是:%f\n",max);
//三个数的最大值是MAX
希望给我一个赞~!~!这个比较严谨
system("pause");
return
0;
}
第3个回答  2020-03-13
#
include<stdio.h>
int
main()
{
int
max(int
x
,int
y
,int
z);
int
a,
b,
c,
e
;
scanf("%d
,
%d,
%d",&a,&b,&c);
e
=
max
(a,
b
,
c);
printf("max=%d\n",e);
return
0
;
}
int
max(int
x
,int
y
,int
z)
{
int
f,m
;
if(x>y)
f=x;
//如果x大于y,把X的值赋给f
else
f
=
y;
//否则,把Y的值给f
if(f>z)
m=f;
//再把f的值与z比较,如果大于z,把f的值赋给m,并返回m
else
m
=
z;
//否则,f比z小,把z值赋给m
return(m);
//整体思路就是先对2个数比较大小,再和第3个数比较
}
第4个回答  2020-03-15
/*
//三个数比较大小
int
x,y,z,q,w;
printf("请输入三个要比较的整数:");
scanf("%d
%d
%d",&x,&y,&z);
if
(x>y)
{
q=x;
}
else
{
q=y;
}
if
(q>z)
{
w=q;
}
else
{
w=z;
}
printf("三数中最大的为:%d",w);*/