jhw8113515 发表于 2020-11-18 17:16:36

新手提问,比较三个数,找出最大数值的算法,

#include "stdio.h"

int main()
{
        int max(int x,int y, int z);
        int a ,b ,c ,d ;
        scanf_s("%d.%d,%d", &a, &b, &c);
        d = max(a, b, c);
                printf("max=%d", d);
        return 0;
}
int max(int x, int y, int z)
{
        int w;
        if ((x > y) & (x > z))
        {
                w = x;
        }
        if ((y > x) &( y > z))
        {
                w = y;
        }
        if ((z > x )&( z > y))
        {
                w = z;
        }
        return w;
}
每次输入三个数,最后max都等于第一个数字,求问这是为什么?改怎么修改呢?

jackz007 发表于 2020-11-18 17:40:27

本帖最后由 jackz007 于 2020-11-18 17:48 编辑

      逻辑运算符写错了
int max(int x, int y, int z)
{
      int w ;
      if ((x > y) && (x > z))
      {
                w = x;
      }
      if ((y > x) && (y > z))
      {
                w = y;
      }
      if ((z > x) && (z > y))
      {
                w = z;
      }
      return w;
}
      帮楼主简化了一下代码:
#include <stdio.h>

int max(int x , int y , int z)
{
      int m = x       ;
      if(y > m) m = y ;
      if(z > m) m = z ;
      return m      ;
}

int main(void)
{
      int a , b , c                         ;
      scanf_s("%d%d%d" , & a , & b , & c)   ;
      printf("max = %d\n" , max(a , b , c)) ;
}

jhw8113515 发表于 2020-11-18 18:00:06

jackz007 发表于 2020-11-18 17:40
逻辑运算符写错了
int max(int x, int y, int z)
{


我发现核心问题是 scanf_s("%d.%d,%d", &a, &b, &c);
%d之间不能加逗号.
大佬的算法拓展了我的思路,感谢大佬!{:5_106:}{:5_92:}

永恒的蓝色梦想 发表于 2020-11-18 18:14:52

jackz007 发表于 2020-11-18 17:40
逻辑运算符写错了
int max(int x, int y, int z)
{


据我所知,& 和 && 在用于逻辑运算时除了短路逻辑并没有什么区别。
页: [1]
查看完整版本: 新手提问,比较三个数,找出最大数值的算法,