描述
KiKi想知道,已经给出的三条边 aa、bb、cc 能否构成一个++非退化三角形++ ,如果能构成,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。
【名词解释】
++非退化三角形++:三条边长均大于 00 且任意两边之和均大于第三边的三角形。
输入描述:
在一行上输入三个整数 a,b,c(0<a,b,c<10)a,b,c(0<a,b,c<10),表示三角形的三条边。
输出描述:
在一行上输出一个字符串,表示三角形的类型,具体地:
∙ ∙如果三角形是等边三角形,则输出 Equilateral triangle!Equilateral triangle!;
∙ ∙如果三角形是等腰三角形,则输出 Isosceles triangle!Isosceles triangle!;
∙ ∙如果三角形是普通三角形,则输出 Ordinary triangle!Ordinary triangle!;
∙ ∙如果不能构成非退化三角形,则输出 Not a triangle!Not a triangle!。
代码:
cpp
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b, c;
while (scanf("%d %d %d", &a, &b, &c) != EOF) { // 注意 while 处理多个 case
if ((a == b && b == c))
{
printf("Equilateral triangle!");
}
else if ((a + b > c && a + c > b &&b + c > a) && (a == c || b == c || a == b))
{
printf("Isosceles triangle!");
}
else if (a + b > c && a + c > b && b + c > a)
{
printf("Ordinary triangle!");
}
else
{
printf("Not a triangle!");
}
}
return 0;
}
分析:
- 先判断等边三角形(
a == b && b == c):三边相等是最特殊的三角形类型,优先判断可避免被等腰三角形的「两边相等」条件误判; - 再判断等腰三角形:通过「三角形合法性 + 两边相等」筛选,此时已排除等边三角形,仅匹配「两边相等、第三边不等」的纯等腰三角形;
- 接着判断普通三角形:仅保留「合法但非等边、非等腰」的三角形;
- 最后兜底非三角形:所有不满足上述条件的情况统一归类,无遗漏场景。