无论输入如何,最小函数都会给出输出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无论输入如何,此代码都会给我输出。我的代码有什么问题?

回答

您还没有覆盖的情况下正确,如什么,如果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;
}


以上是无论输入如何,最小函数都会给出输出6422164的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>