c语言不知道哪里出问题了

不知道是出了什么问题

#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);
 
}
 
 

img

逻辑问题

#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;