题目
读入三个正整数边长 a、b、c,能构成三角形则输出 能构成,否则输出 不能构成。
输入格式:一行输入三个正整数 a、b、c,以空格分隔。
输出格式:如果能构成三角形输出 能构成,否则输出 不能构成,末尾换行。
数据范围与约定:1 ≤ a, b, c ≤ 108。
思路与算法
1. 三角形几何不等式
平面上三条线段构成三角形的充要条件是:任意两边之和大于第三边。在未预先对三边排序的情况下,必须同时验证三个不等式:a + b > c、a + c > b、b + c > a。
2. 逻辑短路与健全性
如果其中任意一个不等式不满足(例如 1+2=3 不大于 3),则无法构成三角形;同时要保证三边长度均为正数。
完整程序
#include <stdio.h>
int main(void)
{
int a, b, c;
if (scanf("%d %d %d", &a, &b, &c) != 3) {
return 1;
}
// 构成三角形充要条件:三边均为正数,且任意两边之和大于第三边
if (a > 0 && b > 0 && c > 0
&& a + b > c && a + c > b && b + c > a) {
printf("能构成\n");
} else {
printf("不能构成\n");
}
return 0;
}运行示例
示例 1:
输入:
3 4 5输出:
能构成示例 2:
输入:
1 2 3输出:
不能构成