C语言学习笔记202606008- 三角形判断(3种方法)
一、知识点简介
输入三个整数边长,判断是否可以构成三角形;若可以,进一步判断是:等边三角形、等腰三角形、普通三角形。
采用模块化编程思想:单独封装判断三角形函数,主函数只负责输入输出、业务判断,代码可读性高、复用性强,是大一C语言必考写法。
二、三角形判断数学规则
1. 基础前提
三角形所有边长必须 大于0,0和负数无法构成边长。
2. 核心判定条件(任意满足)
任意两边之和大于第三边:
-
a + b > c
-
a + c > b
-
b + c > a
3. 三角形分类规则
-
等边三角形 :三边全部相等(ab && bc)
-
等腰三角形:任意两边相等(排除等边)
-
普通三角形:三边全部不相等
三、完整可运行代码
c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 函数:判断是否能构成三角形
// 返回1:可以构成 返回0:无法构成
int isTriangle(int a, int b, int c)
{
// 边长必须全部大于0,且满足三边关系
return (a > 0 && b > 0 && c > 0)
&& (a + b > c && a + c > b && b + c > a);
}
int main()
{
int a, b, c;
printf("请输入三个整数边长:");
scanf("%d %d %d", &a, &b, &c);
// 调用函数判断
if (isTriangle(a, b, c))
{
printf("可以构成三角形\n");
// 判断三角形类型
if (a == b && b == c)
{
printf("三角形类型:等边三角形\n");
}
else if (a == b || a == c || b == c)
{
printf("三角形类型:等腰三角形\n");
}
else
{
printf("三角形类型:普通三角形\n");
}
}
else
{
printf("无法构成三角形\n");
}
return 0;
}
四、拓展写法:排序简化判断
核心原理:只需判断 最小两边之和 > 最大边,无需判断三个条件,代码更高效
c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b, c, temp;
printf("请输入三个整数边长:");
scanf("%d %d %d", &a, &b, &c);
// 冒泡排序:让a<=b<=c
if (a > b) { temp = a; a = b; b = temp; }
if (a > c) { temp = a; a = c; c = temp; }
if (b > c) { temp = b; b = c; c = temp; }
// 只需判断最小两边之和大于最大边
if (a > 0 && a + b > c)
{
if (a == b && b == c)
printf("等边三角形\n");
else if (a == b || b == c)
printf("等腰三角形\n");
else
printf("普通三角形\n");
}
else
{
printf("无法构成三角形\n");
}
return 0;
}
五、测试案例
| 输入数据 | 运行结果 |
|---|---|
| 3 4 5 | 普通三角形 |
| 5 5 5 | 等边三角形 |
| 4 4 6 | 等腰三角形 |
| 1 2 3 | 无法构成三角形 |
| 0 5 6 | 无法构成三角形 |
六、学习总结
-
使用自定义函数实现功能封装,符合模块化编程思想,代码复用性更高;
-
三角形核心判定:边长为正 + 任意两边之和大于第三边;
-
进阶优化:排序后仅判断一次条件,简化代码、提升效率;
-
分层判断:先判断能否构成三角形,再细分三角形类型,逻辑清晰不混乱。