从键盘上输入三个实数,它们分别代表三条线段的长度,请写一个判断这三条线段所组成的三角形属于什么类型(不等边,等腰,等边或不构成三角形)的C程序;如果能构成三角形,求出三角形的面积(取小数2位)。用swtich写
时间: 2024-10-20 09:19:05 浏览: 16
为了编写一个C程序来实现这个功能,首先我们需要获取用户输入的三个实数并检查它们是否可以构成一个三角形。然后,根据输入的值确定三角形的类型。最后计算并输出三角形的面积。以下是使用`switch`结构的C程序示例:
```c
#include <stdio.h>
#include <math.h>
// 计算两个数的最大值
int max(int a, int b) {
return (a > b) ? a : b;
}
// 检查是否能构成三角形并返回类型
enum TriangleType {
NOT_A_TRIANGLE,
SSS, // 等边三角形
SAS, // 等腰三角形
SSA // 不等边三角形
};
TriangleType check_triangle(double a, double b, double c) {
if (a + b <= c || a + c <= b || b + c <= a) {
return NOT_A_TRIANGLE;
} else {
switch (1) { // 判断条件简化为1避免冗余比较
case 0: // 如果三边相等,则是等边三角形
if (fabs(a - b) < 0.001 && fabs(b - c) < 0.001 && fabs(c - a) < 0.001) {
return SSS;
}
break;
case 1: // 若两边及夹角相等,则是等腰三角形
if (fabs(a - b) < 0.001 && a != c) {
return SAS;
}
break;
default: // 其他情况视为不等边三角形
return SSA;
}
}
}
// 计算三角形面积
double triangle_area(double a, double b, double c) {
double s = (a + b + c) / 2; // 半周长
return sqrt(s * (s - a) * (s - b) * (s - c));
}
int main() {
double a, b, c;
printf("请输入三条线段的长度:\n");
scanf("%lf %lf %lf", &a, &b, &c);
TriangleType type = check_triangle(a, b, c);
if (type == NOT_A_TRIANGLE) {
printf("无法构成三角形。\n");
} else {
printf("三角形类型:\n");
switch (type) {
case SSS:
printf("等边三角形\n");
break;
case SAS:
printf("等腰三角形\n");
break;
case SSA:
printf("不等边三角形\n");
break;
}
double area = triangle_area(a, b, c);
printf("三角形面积(保留两位小数):%.2f\n", area);
}
return 0;
}
```
在这个程序中,我们首先通过`check_triangle`函数检查输入的线段是否能构成三角形,并确定其类型。接着,如果形成了三角形,我们就计算面积并打印结果。
阅读全文