C语言 C程序设计习题

这是C程序设计的一个习题,刚开始学C语言, 有点不理解啊,程序可以运行但结果不对,逻辑不知道哪出错了

img

max函数里if是想判断两个条件都满足,那么c语言的和表示是两个&,即&&
接着是逻辑,判断三个数大小只需要两个判断,可以先初始化最大值w = x,接着x和y的大小,取x和y的最大值在和z判断即可得出最大值
可以这么写

int max(int x, int y, int z)
{
    int w = x;    //初始化w = x,w表示最大者
    if (x < y)   // 若满足该条件说明x<y,xy最大者为x,最大者w变为y
    {
        w = y;
    }    // 若不满足第一个if条件,说明最大者w为x无需改变w
    if ( w < z)   // 若满足第2个if条件,说明最大者w为z需改变w=z
    {
        w = z;
    }  //若不满足第一个if条件,说明最大者w为x无需改变w
    return 0;
}

img

max函数中的逻辑有问题,与是&&,正确写法y>x>z的话应该是y>x&&y>z
下面是我实现这个问题的代码请参考:


#include <stdio.h>

int max(int x, int y, int z);

int main(int argc, const char *argv[])
{
    int max(int x, int y, int z);
    int a, b, c, q;
    scanf("%d, %d, %d", &a, &b, &c);
    while((getchar()!='\n'));
    q = max(a, b, c);
    printf("max=%d\n", q);
    return 0;
}
int max(int x, int y, int z)
{
    int w=0;
    if (x > y ){
        if(x>z){
            w=x;
        }
        else{
            w=z;
        }
    }else if(y>z){
        w=y;
    }else{
        w=z;
    }
    return w;
}

max函数里面的判断不怎么对

max函数 逻辑语句有问题