C语言如何求两个整数中的较大者?

Python08

C语言如何求两个整数中的较大者?,第1张

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函数可以这样写,方法不唯一,能理解就可以:int

max(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)

}