输入三条边长,判断是什么类型的三角形。
技巧:先排序,可以减少很多没有必要的判断:
比如:只需要判断最小的2个边的和是否大于最大边即可判断三角形是否合法;只需要最小边大于0即可; 等腰三角形判断只需要判断a作为底边或者腰。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
float a, b, c;
printf("请输入三角形的三条边长:\n");
scanf("%f, %f, %f", &a, &b, &c);
//排序(a>b>c),以减少逻辑判断
float temp;
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(c <= 0 || b+c < a) {
printf("不满足两边之和大于第三边的条件。\n");
} else if(a == b && b == c) {
printf("等边三角形。\n");
} else if(a == b || b == c) {
//a要不就是底边要不就是腰,所以只需要验证a==b && b==c
printf("等腰三角形\n");
} else {
printf("不等边三角形\n");
}
return 0;
}