P5717 【深基3.習8】三角形分類 題解
阿新 • • 發佈:2022-06-05
話不多說,咱先看題
題目大意
給出三條線段 a,b,ca,b,c 的長度,讓你判斷這三條線圍成的三角形有什麼性質
如果三條線段不能組成一個三角形,輸出Not triangle;
如果是直角三角形,輸出Right triangle;
如果是銳角三角形,輸出Acute triangle;
如果是鈍角三角形,輸出Obtuse triangle;
如果是等腰三角形,輸出Isosceles triangle;
如果是等邊三角形,輸出Equilateral triangle。
題目解析
咋看似乎不難,但其實有不少坑點:
1.等邊三角形一定是等腰三角形,但等腰三角形不一定是等邊三角形
2.當一個三角形是銳角三角形時,它就不可能是直角三角形或鈍角三角形,反之亦然(好像是廢話)
3.當三條線判定不為三角形時,就不能往下判斷了,比如由999 1 1 三條邊構成的就並不是等腰三角形
AC程式碼
#include <bits/stdc++.h> using namespace std; int main(){ long long a,b,c,i; cin>>a>>b>>c; //底下三個if判斷是排序,使其a和b是短邊,c為長邊 if(a>=c){ i=a; a=c; c=i; } if(a>=b){ i=a; a=b; b=i; } if(b>=c){ i=b; b=c; c=i; } int key=0;//定義變數key來解決坑點 3 if(a+b<=c){//判斷是否為三角形 cout<<"Not triangle"<<endl; key=1; } if(a*a+b*b==c*c&&key==0){//判斷直角三角形 cout<<"Right triangle"<<endl; } if(a*a+b*b>c*c&&key==0){//判斷銳角三角形 cout<<"Acute triangle"<<endl; } if(a*a+b*b<c*c&&key==0){//判斷鈍角三角形 cout<<"Obtuse triangle"<<endl; } if(a==b&&key!=1){//判斷等腰三角形 cout<<"Isosceles triangle"<<endl; } else if(a==c&&key!=1){ cout<<"Isosceles triangle"<<endl; } else if(b==c&&key!=1){ cout<<"Isosceles triangle"<<endl; } if(a==b&&b==c&&key!=1){//判斷等邊三角形 cout<<"Equilateral triangle"<<endl; } return 0;//AC! }