在线编译器 C

#include <stdio.h> int main() { int a, b,c; scanf("%d%d%d", &a, &c,&b); if (a +b>c&&a+c>b&&b+c>a) { printf("YES\n"); } else if (a < b) { printf("NO\n"); } return 0; }
这段代码试图判断三个整数是否能构成三角形。它读取三个数,检查是否任意两边之和大于第三边,如果是则输出YES,否则进入一个不必要的else if分支。

- 你的else if条件 `a < b` 与三角形判断无关。当三边不满足三角形条件时,应该直接输出NO,而不是再判断a是否小于b。这个else if会导致某些不构成三角形的情况(比如a>=b时)不输出任何结果。
- 注意变量读取的顺序:你写的是 `%d%d%d` 对应 `&a, &c, &b`,但通常习惯按顺序a、b、c读取。虽然结果一样,但容易让人困惑,建议保持变量顺序与输入一致。