C语言中判断三角形形状。
时间: 2024-10-10 19:00:30 浏览: 32
在C语言中,判断一个三角形的形状通常基于三条边长之间的关系。主要有三种类型的三角形:等边三角形、等腰三角形和普通三角形。这里我们可以编写一个函数,接受三条边作为参数,然后使用条件语句来确定其类型。以下是一个基本的实现:
```c
#include <stdio.h>
#include <math.h> // 引入数学库,用于计算平方根
// 函数声明
enum TriangleType { INVALID, RIGHT, ISOSCELES, SCALENE } isTriangleValid(float a, float b, float c);
// 判断三角形类型
enum TriangleType isTriangleValid(float a, float b, float c) {
// 三角形三边之和必须大于0
if (a + b <= c || a + c <= b || b + c <= a) {
return INVALID; // 边长无法构成三角形
}
// 计算半周长防止浮点误差带来的无效结果
float s = (a + b + c) / 2;
// 海伦公式计算面积,若面积为0,则是直角三角形
float area = sqrt(s * (s - a) * (s - b) * (s - c));
if (area == 0) {
return RIGHT; // 直角三角形
}
// 若两边相等,返回等腰三角形,否则返回一般三角形
if (fabs(a - b) < 0.0001 && a != c || fabs(b - c) < 0.0001) {
return ISOSCELES;
}
else {
return SCALENE;
}
}
int main() {
float side1, side2, side3;
printf("Enter the lengths of sides of a triangle: ");
scanf("%f %f %f", &side1, &side2, &side3);
enum TriangleType type = isTriangleValid(side1, side2, side3);
switch (type) {
case INVALID:
printf("Invalid triangle.\n");
break;
case RIGHT:
printf("Right triangle.\n");
break;
case ISOSCELES:
printf("Isosceles triangle.\n");
break;
case SCALENE:
printf("Scalene triangle.\n");
break;
}
return 0;
}
```
阅读全文