Online Compiler C

#include <stdio.h> int main() { int a,b,c; scanf(%d%d%d,&a,&b,&c); int max=a; if(b>max){ b=max; } if(c>max){ c=max; } int sum=a+b+c-max; if sum>max{ printf("YES\n") } if sum<max;{ printf("NO\n"); } return 0; }
这段代码试图判断三个数能否构成三角形,但存在多个语法和逻辑错误。

- 第4行 `scanf(%d%d%d,&a,&b,&c);` 中,格式字符串缺少双引号,应写为 `scanf("%d%d%d", &a, &b, &c);`。
- 第6行和第8行,你写成了 `b=max;` 和 `c=max;`,这会把 `b` 和 `c` 的值改为 `max`,丢失了原始数据。正确的思路应该是更新 `max` 的值,而不是修改 `b` 或 `c`。
- 第10行 `if sum>max{` 缺少括号,应写为 `if (sum > max)`。
- 第11行 `printf("YES\n")` 缺少分号。
- 第12行 `if sum<max;{` 中,条件后的分号会导致 `if` 语句提前结束,后面的花括号内的代码会无条件执行。应去掉分号并加上括号。

另外,逻辑上你试图用 `a+b+c-max` 计算较小两边的和,但因为你错误地修改了 `b` 和 `c`,这个和可能不正确。三角形判断的正确条件是:任意两边之和大于第三边。