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

#include <stdio.h> int main() { int a,b,c,max; scanf("%d%d",&a,&b,&c); if (a>b&&a>c) {max=a; } if (b>a&&b>c) {max=b; } if (c>a&&c>b) {max=c; } printf("%d\n ",max); return 0; }
这段代码试图从三个整数中找出最大值并输出。但存在两个问题:

- 在 `scanf` 中,你写了三个变量 `&a,&b,&c`,但格式字符串只写了 `"%d%d"`,这只能读取两个整数,第三个变量 `c` 不会被赋值,导致后续比较时 `c` 的值不确定。

- 当两个或三个数相等时,例如 `a` 和 `b` 相等且都是最大值,所有 `if` 条件都不成立,`max` 变量未被赋值,输出会是未初始化的垃圾值。

- 注意 `if` 条件中使用了 `>` 而不是 `>=`,这会导致相等情况被遗漏。