判断逻辑有问题,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);
}
你的判断逻辑有问题。举个例子:
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);
}
另外,main函数里输出最大值应该取d的值而不是c的值。
定义三个变量,存放三个数
用if
else语句判断两个数大小
互相比较即得出最大数
用printf语句打印结果
main函数打印的时候, 打印d, 而不是c, printf("max=%d\n", d);
max函数求三个数最大,不需要这么多判断。只需要判断两次
x > y ? (s = x) : (s = y);
if (z > s) s = z;
return s;
max在main下方,要先声明下比较好, 在main函数上方加一句int max(int, int, int);
main函数里:printf("max=%d\n",c);改为printf("max=%d\n",d);
max函数里面:{if(x>y&&x>z)return x;if(y>x&&y>z)return y;if(z>y&&z>x)return z;}
PS:不能比较存在相等的,如果输入的数有相等的,还得完善。