在线编译器 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-9行中,你错误地修改了变量 `b` 和 `c` 的值,而不是更新 `max`。正确的思路应该是:如果 `b > max`,则把 `max` 更新为 `b`,而不是把 `b` 改成 `max`。同样处理 `c`。
- 第11行和第13行的 `if` 语句后面多了分号,并且条件没有用括号括起来。正确的写法是 `if (sum > max)` 和 `if (sum < max)`,且后面不能加分号。
- 三角形判断的条件是:任意两边之和大于第三边。你只比较了 `sum`(即 `a+b+c-max`)与 `max` 的大小,这实际上是检查最大边是否小于另外两边之和,这个思路是对的,但需要确保 `sum` 计算正确。注意你第10行计算 `sum` 时减去了 `max`,但 `max` 的值可能已经被错误地修改了,所以需要先修正 `max` 的更新逻辑。