Онлайн компилятор C

#include <stdio.h> int max3(int a, int b, int c) { if (a >= b && a >= c) { return a; } if (a <= b && c <= b) { return b; } if (c >= a && c >= b) { return c; } }
这段代码定义了一个函数 `max3`,用于返回三个整数中的最大值。它通过三个条件判断来分别检查 a、b、c 是否为最大值。

- 第一个条件判断 a 是否同时大于等于 b 和 c,如果是则返回 a。
- 第二个条件判断 b 是否同时大于等于 a 和 c,但这里条件写成了 `a <= b && c <= b`,逻辑上等价于 b 是最大值,但写法不够直观。
- 第三个条件判断 c 是否同时大于等于 a 和 b,如果是则返回 c。

这段代码在逻辑上是正确的,但有一个潜在问题:如果三个数相等,第一个条件会成立并返回 a,所以不会出现没有返回值的情况。不过,代码风格上可以改进。

- 提示:第二个条件中的 `a <= b && c <= b` 虽然正确,但可以写成更对称的形式,比如 `b >= a && b >= c`,这样更容易看出是在检查 b 是否为最大值。
- 提示:考虑如果三个数中有两个相等且大于第三个,比如 a=5, b=5, c=3,你的代码会正确返回 a 吗?可以测试一下这种情况。