c语言 比较三个数大小
void main()
{
int max(int x,int y,int z);
int a,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max = %d\n",d);
}
int max(int x,int y,int z)
{
int m,int n;
if(x>y) m = x;
else m = y;
if(m>z) n = m;
else n = z;
return(n);
}
为什么最后输出的是a的值,而不是比较大小后的值呢??? 展开
首先,我们需要接收键盘的输入,将三个数字存入对应的变量中。为了提高适用性,在这里建议大家使用 double 类型的变量来接收。然后,再进行第一轮比较,以便找出最大数。
比较方法:
1)比较从第一个数开始,先比较第一个数和第二个数的大小,如果第一个数大于第二个数,则将第一个数和第二个数互换;不大于(即等于或小于)则不作处理。
2)然后,再将第二个数和第三个数比较,同样,若大于则将它们互换。
注意:
如果仅是需要找出最大数,只需要进行一轮比较即可;同样的道理,如果只需要找出最小数,也只需要进行一轮比较,只是将上面的大于改成小于即可。
2
如果同时还需要求出最小数和中间数,则还需要进行第二轮比较。我们再从第一个数开始,方法与第一轮一样,只是已经不需要进行第一轮中的第 2)步比较,因为最后的第三个数已经是最大。
第二轮比较方法:
1)比较从第一个数开始,先比较第一个和第二个数的大小,如果第一个数大于第二个数,则将第一个数和第二个数互换。
这样,就分别得到了最小数、中间数和最大数。
如何实现
下面,根据上面的思路来编写 C 语言代码。为了让大家理解起来更容易,我这里采用的是思路最简单的编码方法,而不是代码最精简的方法。同时,我也尽量做到为每句关键的代码都添加相应的注释。
首先,包含相应的头文件 <stdio.h>,并添加一个 main 函数。
随后接收输入的三个数。在此需要注意的是,接收 double 类型的数值时应使用 %lf,而不是 %f。
接收输入的数之后,便可以开始进行第一轮比较。注意,第一轮比较共有两步,第一步是将第一个数与第二个数比较,第二步是将第二个数与第三个数比较。
然后,进行第二轮比较。
5
最后,输出结果。注意,输出时使用 %g 参数的作用是打印小数时不输出末尾的 0,这样更加整洁漂亮些。
参考资料
百度经验.百度[引用时间2018-5-3]