功能:判断三角形的类型
描述:根据给定的三条边判断是否能构成三角形,并且输出它对应的面积和三角形类型
从键盘中输入三条边后,只需判断这三条边中任意两边之和是否大于第三边
如果满足条件,可以构成三角形
再做进一步判断确定该三角形是什么三角形
若两边相等-则是等腰三角形;若三边相等,则是等边三角形;若三边满足勾股定理,则是直角三角形
另外,注意 && 和 || 的使用,以及 & 与 && 的区别和 | 与 || 的区别
#include
#include
#include
/**
功能:判断三角形的类型
描述:根据给定的三条边判断是否能构成三角形,并且输出它对应的面积和三角形类型
**/
int main(int argc, char const *argv[]) {
float a, b, c;
float s, area;
printf("输入三角形的三条边长(以空格分隔):");
scanf("%f %f %f", &a, &b, &c); // 输入三条边
printf("a = %f\n", a);
printf("b = %f\n", b);
printf("c = %f\n", c);
if (a + b > c && b + c > a && a + c > b) { // 判断两边之和是否大于第三边
s = (a + b + c) / 2;
area = (float)sqrt(s *(s - a)*(s - b)*(s - c)); // 计算三角形的面积
printf("面积是:%f\n", area); // 输出三角形的面积
if (a == b && a == c) // 判断三条边是否相等
printf("三条边组成的三角形是: 等边三角形\n");
// 输出等边三角形
else if (a == b || a == c || b == c)
// 判断三角形中是否有两边相等
printf("三条边组成的三角形是: 等腰三角形\n");
// 输出等腰三角形
else if ((a * a + b * b == c * c) || (a * a + c * c == b * b) || (b * b + c * c == a *a))
// 判断是否有两边的平方和大于第三边的平方
printf("三条边组成的三角形是: 直角三角形\n");
// 输出直角三角形
else
printf("三条边组成的三角形是: 普通三角形");
// 普通三角形
}
else
// 如果两边之和小于第三边不能组成三角形
printf("该三条边不能构成三角形\n");
}
示例结果:
$ gcc ex057.c -o demo
$ ./demo
输入三角形的三条边长(以空格分隔):3 4 5
a = 3.000000
b = 4.000000
c = 5.000000
面积是:6.000000
三条边组成的三角形是: 直角三角形