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

#include <stdio.h> int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); int max=a; if(b>max){ max=b; } if(c>max){ max=c; } int sum=a+b+c-max; if (sum>max){ printf("YES\n"); } if (sum<max);{ printf("NO\n"); } return 0; }
这段代码的功能是:读入三个整数,判断它们能否构成一个三角形(两边之和大于第三边)。它先找出三个数中的最大值,然后判断剩余两个数的和是否大于最大值。

代码中存在一个语法错误,导致无论输入什么都会输出"NO"。

- 在第16行,`if (sum<max);` 后面多了一个分号。这个分号使得 `if` 语句体为空,而后面大括号里的 `printf("NO\n");` 变成了一个独立的代码块,无论条件是否成立都会执行。你需要去掉这个分号,让大括号内的语句成为 `if` 的条件体。

- 另外,当 `sum` 等于 `max` 时,程序不会输出任何结果。你可以考虑用 `else` 来处理 `sum <= max` 的情况,这样逻辑会更完整。