首页 > 解决方案 > 无论输入如何,Min 函数都会给出输出 6422164

问题描述

我想实现一个返回最少四个元素的函数。我写了以下代码:

#include <stdio.h>

int max_of_four(int a, int b, int c, int d) {
  int max;

  if (a > b) {
    if (a > c) {
      if (a > d) {
        max = a;
      }
    }
  } else if (b > a) {
    if (b > c) {
      if (b > d) {
        max = b;
      }
    }
  } else if (c > a) {

    if (c > b) {
      if (c > d) {
        max = c;
      }
    }
  } else {
    max = d;
  }
  return max;
}

int main() {
  // initializing int a, b, c, d, max;
  scanf("%d %d %d %d", &a, &b, &c, &d);
  int ans = max_of_four(a, b, c, d);
  printf("%d", ans);

  return 0;
}

6422164无论输入如何,这段代码都会给我输出。我的代码有什么问题?

标签: c

解决方案


您没有正确涵盖这些案例,例如,如果a=1b=2c=3。第二个if( b>a) 中的条件为真并进入块。然后条件b>c为假,不会进入其他块。最后返回未初始化的变量max,返回一个未定义的值,您看到的值为 6422164。

更好的编写方法是初始化max为第一个值,然后将每个值依次与 比较max,如果当前数字大于最大值,则更新它。

int max_of_four(int a,int b,int c,int d) {
    int max = a;

    if (b > max) max = b;
    if (c > max) max = c;
    if (d > max) max = d;

    return max;
}

推荐阅读