【if...else】三角形判断

给定三条边的长度,判断能否组成三角形,如果可以,判断三角形的形状。

输入要求

一组数据,每行三个实数,在(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\n");
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\n");
16         else    //不是等腰直角三角形的情况,那就是一般的等腰三角形了 
17             printf("Isosceles triangle\n");    
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\n");
23     }
24     else if(a + b > c && a + c > b && c + b > a) 
25     {
26         /*判断是否为一般三角形 */
27         printf("General triangle\n");
28     }
29     else                                        
30     {
31         /*不是三角形 */
32         printf("Not a triangle\n");
33     }    
34     return 0;
35 } 

 

 

 

 

 
posted @ 2017-09-22 12:56  听说这是最长的名字了  阅读(918)  评论(0编辑  收藏  举报