P5717 【深基3.习8】三角形分类

先说思路:三角形的三边关系判断它能否拼成一个三角形以及是怎样的三角形

那么若是它两边之和大于第三边,那么它不能构成一个三角形;

在此可以先对这三条线段的大小关系,用if-else语句进行判断,可以通过存储中间变量的方式,做到变量值的交换,当然如果你水平可以的话可以直接用快速排序、希尔排序(PS:我是个乐色),但是最好还是用后者,毕竟适用度更高。这里用冒泡排序:

之后再对它深层次的发掘首先根据三边的平方关系判断三角形的形状

最后是特殊情况,等腰和等边,后者好判断,直接三边相等就好,前者依次拿两边进行比较,若是两边相等,那就ok,但是还要注意一点,等边三角形同时也是特殊的等腰三角形,二者都需要输出,那么这就决定了等边还得包括在判断等腰的if-else语句中

以下是具体的代码实现:

此代码仅供参考,若是有时间,还是好好的一点点将题目好好研读下来,然后列出思维导图之类的有助于理清思路的东西,这样对学习代码也有很大的好处。

### C语言实现三角形分类算法 为了实现三角形分类功能,程序需要接收三个点的坐标作为输入,并判断这三个点是否能组成一个有效的三角形。如果可以形成三角形,则进一步计算其周长和面积并输出结果。 ```c #include <stdio.h> #include <math.h> // 计算两点之间的距离 double distance(double x1, double y1, double x2, double y2) { return sqrt(pow((x2 - x1), 2) + pow((y2 - y1), 2)); } int main() { double x1, y1, x2, y2, x3, y3; // 输入三点坐标 scanf("%lf %lf %lf %lf %lf %lf", &x1, &y1, &x2, &y2, &x3, &y3); // 计算三边长度 double sideA = distance(x1, y1, x2, y2); double sideB = distance(x2, y2, x3, y3); double sideC = distance(x3, y3, x1, y1); // 判断是否满足构成三角形条件 if ((sideA + sideB > sideC) && (sideA + sideC > sideB) && (sideB + sideC > sideA)) { // 使用海伦公式求解面积 double p = (sideA + sideB + sideC) / 2.0; double area = sqrt(p * (p - sideA) * (p - sideB) * (p - sideC)); // 打印结果保留两位小数 printf("L = %.2f, A = %.2f\n", sideA + sideB + sideC, area); } else { printf("Impossible\n"); } return 0; } ``` 此代码片段实现了从用户处获取三个顶点的位置数据,接着利用欧几里得几何中的距离公式来测量每一对相邻节点间的直线间距。之后应用简单的不等关系验证所选位置能否构建合法图形[^2]。一旦确认有效,便采用半周长乘以其各部分差值平方根的方法——即著名的海伦公式——得出封闭区域内部空间大小,并最终呈现给使用者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值