1 条题解
-
0
思路
三条边能拼成三角形的条件是:任意两边之和大于第三边,三个条件缺一不可:
- a + b > c
- a + c > b
- b + c > a
为什么要检查三个而不是只检查一个?因为输入并不保证 a 是最长边。比如
1 2 3恰好是 a + b = c(不成立),但如果输入顺序是3 1 2,只检查a + b > c就会误判。小提示:如果先把三边排序,让 c 成为最大边,就只需要检查
a + b > c一个条件。但直接写三个条件最省事,也不容易错。代码
#include <stdio.h> int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); if (a + b > c && a + c > b && b + c > a) printf("yes\n"); else printf("no\n"); return 0; }易错点
- "大于"不是"大于等于":两边之和恰好等于第三边(如 1、2、3)时三边会"压扁"成一条线段,不能构成三角形,要输出 no。
- 三个条件要用
&&(并且)连接,写成||(或者)就全错了。 - 边长为 0 或负数时(如 0 1 1),同样不满足条件,自然输出 no,无需特判。
- 1
信息
- ID
- 8
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
吉公网安备22010402001496号