不知道是出了什么问题
#include <stdio.h>
int 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 is%d",d);
return 0;
}
int max(int x,int y,int z)
{
int f;
if(x>y>z)f=x;
if(x>z>y)f=x;
if(y>x>z)f=y;
if(y>z>x)f=y;
if(z>y>x)f=z;
if(z>x>y)f=z;
return(f);
}
将判断大小那里,使用两个关系表达式并用逻辑运算符&&连接起来,因为原表达式不能判断三个数的大小情况;
然后将条件里的大于>改为大于等于>=,以便可以判断两个数或三个数相等的情况。
修改如下:
参考链接:
#include <stdio.h>
int 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 is %d",d);
return 0;
}
int max(int x,int y,int z)
{
int f;
// https://blog.csdn.net/mygod2008ok/article/details/90273761
// 将下面if的条件改为 使用逻辑运算符&& 连接的两个关系表达式
// 然后>改为>=,以便可以判断输入的三个数或两个数相等的情况
if(x>=y&&y>=z)f=x;
if(x>=z&&z>=y)f=x;
if(y>=x&&x>=z)f=y;
if(y>=z&&z>=x)f=y;
if(z>=y&&y>=x)f=z;
if(z>=x&&x>=y)f=z;
return(f);
}
逻辑问题
#include <stdio.h>
int max(int x, int y, int z);
int main()
{
int a, b, c, d;
scanf("%d,%d,%d", &a, &b, &c);
d = max(a, b, c);
printf("max is %d", d);
return 0;
}
int max(int x, int y, int z)
{
int f;
if (x > y && x > z) {
f = x;
}
else if (y > x && y > z) {
f = y;
}
else {
f = z;
}
return f;
}
【以下回答由 GPT 生成】
问题分析:
在max函数中,通过多次if条件语句进行数值的比较,但是通过>
符号进行连续的数值比较是不正确的,会导致逻辑错误。正确的做法是可以利用嵌套的if-else语句来进行多个数值的比较,并找出最大值。
解决方案:
#include <stdio.h>
int max(int x, int y, int z);
int main()
{
int a, b, c, d;
scanf("%d,%d,%d", &a, &b, &c);
d = max(a, b, c);
printf("max is %d", d);
return 0;
}
int max(int x, int y, int z)
{
int f;
if (x >= y && x >= z) { // 判断x是否最大
f = x;
} else if (y >= x && y >= z) { // 判断y是否最大
f = y;
} else { // z为最大
f = z;
}
return f;
}
这样修改后的代码就可以正确地找到最大值了。通过使用if-else语句进行多个数值的比较,可以确保正确地找到最大值。
【相关推荐】
return(f);改为return f;