首页 > 解决方案 > 我试图找到四个 int 中最大的一个。与 C. 但程序不工作

问题描述

不同类型的答案即将到来。有时代码可以正常工作。有时不是。我找不到解决方案。

#include<stdio.h>

 int max_of_four (int a, int b, int c,int d)
   {
    
    if(a>b)
    { 
      if(a>c)
      {
        if(a>d)
        {
          printf("%d",a);
          }
          else
          { 
          printf ("%d", d);
          }
      }
    }
    else if (b>c)
    {
         if (b>d)
         {
            printf ("%d", b);
         }
         else 
         printf ("%d", d);
    }
    else if (c>d)
    {
        printf("%d", c);
    }
    else("%d",d);
    return a, b,c,d;
   }


 int main (void)
    {
      
      int a, b, c, d;
      
      scanf("%d %d %d %d", &a, &b, &c, &d);
      
      int ans = max_of_four(a, b, c, d);
      
      printf("%d", and);
    
      return 0;
   }

标签: c

解决方案


“有时代码可以工作。有时不行。我找不到解决方案。”

代码中的逻辑很难遵循,这使得很容易错过看到对逻辑错误的贡献。

为了简化问题,这种方法将主要的重复逻辑封装成一个宏,然后重复调用。(请注意,这里也可以使用一个函数,在清理代码方面具有类似的好处。)

//Note: NOT for use with incremented arguments, (eg. MAX(x++, y++))
#define MAX(x, y) (((x) > (y)) ? (x) : (y))


int max_of_four (int a, int b, int c,int d)
{   
     int max=0;
       
     max = MAX(  a, b);
     max = MAX(max, c);
     max = MAX(max, d);
    
     return max;
}

printf()如果 OP 需要查看中间结果,可以重新添加语句,但示例保持原样以突出其简单性。


推荐阅读