C语言如何求两个整数中的较大者?
求取两个数中较大者,可通过以下两种方法。
第一种:
#include<stdio.h>
int main()
{
int x,y,z
scanf ("%d %d",&x,&y)
if(x>y)
{
z=x
}
else
{
z=y
}
printf ("%d\n",z)
return 0
}
第二种:
#include<stdio.h>
int max(int x,int y)//定义max函数
{
int z
if(x>y)
z=x
else
z=y
return(z)
}
int main()
{
int max(int x,int y)//对被调用函数max的声明
int a,b,c
scanf("%d %d",&a,&b)
c=max(a,b)
printf ("%d\n",c)
return 0
}
max函数里的if(x>y>z)那样写编译器是不会检查出错误,但不能实现你要的“求三个数的最大者”,C里的x>y>z跟数学里的x>y>z意思是不一样的。。如假设:x=3,y=2,z=1c里的if(x>y>z)是从左到右先判断第一个“>”,即判断x>y,因为x=3,y=2,所以x>y为真,x>y的值1,那么x>y>z中第二个“>”号就变成判断1>z,z=1,所以1>z就为假,虽然3>2>1,但if(x>y>z)还是为假。。。max函数可以这样写,方法不唯一,能理解就可以:intmax(int
x,int
y,int
z){int
maxmax=x>y?x:ymax=max>z?max:zreturn
max}
判断逻辑有问题,main函数里输出最大值应该取d的值而不是c的值。例如:
x=3,y=1,z=2
if(x>y) s=x //这里s变成x
if(x>z) s=x //这里s仍然是x
if(z>y) s=z //但是到这里s就变成z了,实际上最大值是x
改成如下代码:
int max(int x,int y,int z)
{
int s
if(x>y &&x>z) s=x
else if(y>x &&y>z) s=y
else s=z
return(s)
}