1. 程式人生 > >【if...else】三角形判斷

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

med blog 小貼士 nbsp ... 根據 code abs ner

給定三條邊的長度,判斷能否組成三角形,如果可以,判斷三角形的形狀。

輸入要求

一組數據,每行三個實數,在(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 || a*a + c*c == b*b || c*c + b*b == a*a)//再判斷是否有直角存在 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 }

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