题解 | #三角形判断#
三角形判断
https://www.nowcoder.com/practice/689ec1e742394e09b1059556fc167b65
#include<stdio.h> int main() { int a,b,c;//定义三角形三边 while(scanf("%d %d %d\n",&a,&b,&c)!=EOF)//多组输入标配 { if(a==b&&b==c)//首先判断三边是否相等,若相等,必为等边三角形 { printf("Equilateral triangle!\n");//输出等边三角形 } else //再判断三边不相等情况 { if(a+b>c&&b+c>a&&c+a>b)//三角形三边未知,所以要同时满足任意两边之和大于第三边 { if(a==b||b==c||c==a)//判断是否为等腰三角形 { printf("Isosceles triangle!\n");//输出等腰三角形 } else //剩下就是普通三角形了 { printf("Ordinary triangle!\n");//输出普通三角形 } } else //剩下就是不能构成三角形 { printf("Not a triangle!\n");//输出不能构成三角形 } } } return 0; }
总结:
判断三边是否构成三角形有两种情况:
情况一,知道三边大小,那只要最大的边大于其余两边之和即可构成三角形,
因为两边和都没第三边大,那差更没有第三边大,
最大边加任意一边,仅最大边就比第三边大,那肯定任意两边之和大于第三边,任意两边之差小于第三边,剩下也就是看最大边减剩下的两边,则和最大边是否大于其余两边之和等价,
故:知道三边大小,那只要最大的边大于其余两边之和即可构成三角形
情况二,三边未知
则只要同时满足任意两边之和大于第三边即可,因为两边之和大于第三边且两边之差小于第三边与同时满足任意两边之和大于第三边等价,可以不等式推一下