给定三条边的长度,判断能否组成三角形,如果可以,判断三角形的形状。
输入要求
一组数据,每行三个实数,在(0,10]之间
输出要求
根据每行的数据判断,如果不能组成三角形,则输出“Not a triangle”;如果是“等腰三角形”,则输出“Isosceles triangle”;如果是“直角三角形”,则输出“Right triangle”;如果是“等腰直角三角形”,则输出“Isosceles Right triangle”;如果是“等边三角形”,则输出“Equilateral triangle”;否则,输出“General triangle”。
测试数据
输入示例
1.4142 1.4142 2
1.0000 4.0000 5.0000
输出示例
Isosceles Right triangle
Not a triangle
小贴士
比较浮点数是否相等,比较特殊,最好不要用 ==
比如浮点数a和b进行比较,写成if(a ==b)有时也许会出现你不期望出现的情况
墙裂建议写成if(fabs(a -b) <= 0.0001)
题目分析:
/*
首先我们可以先判断最特殊的三角形--“等边三角形”
然后我们可以先判断等腰类型的三角形(也可以先判断直角三角行,随自己喜欢),我们知道“等腰直角三角形”范围要比“等腰三角形”小,所以我们先判断“等腰直角三角形”再判断“等腰三角形”
之后我们判断“直角三角形”,再后判断“一般三角形”,
最后,如果以上条件都不符合了,那就不是三角形了。
*/
1 #include<stdio.h> 2 int main() 3 { 4 double a,b,c; 5 scanf("%lf %lf %lf",&a,&b,&c); 6 if(a == b && c == a) 7 { 8 /*等边三角形*/ 9 printf("Equilateral triangle "); 10 } 11 else if(a == b || a == c || c == b) 12 { 13 /*先判断是否为等腰*/ 14 if(a*a + b*b - c*c < 0.000001|| a*a + c*c - b*b < 0.000001 || c*c + b*b - a*a < 0.00001)//再判断是否有直角存在 15 printf("Isosceles Right triangle "); 16 else //不是等腰直角三角形的情况,那就是一般的等腰三角形了 17 printf("Isosceles triangle "); 18 } 19 else if(a*a + b*b == c*c || a*a + c*c == b*b || c*c + b*b == a*a) 20 { 21 /*判断是否为直角三角形*/ 22 printf("Right triangle "); 23 } 24 else if(a + b > c && a + c > b && c + b > a) 25 { 26 /*判断是否为一般三角形 */ 27 printf("General triangle "); 28 } 29 else 30 { 31 /*不是三角形 */ 32 printf("Not a triangle "); 33 } 34 return 0; 35 }