题目描述
输入三角形的3条边的长度值(均为正整数),判断是否能为直角三角形的3个边长。如果可以,则输出 yes,如果不能,则输出 no。如果根本无法构成三角形,则输出 no a triangle。
解题代码
【思路】先将三遍从小到大排序,再判断“两边之和大于第三边”,最后用勾股定理判断是否为直角。
#include<stdio.h>
int main(){
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
// 从小到大排序
if(a>b){t=a;a=b;b=t;} //执行完毕之后a<=b
if(a>c){t=a;a=c;c=t;} //执行完毕之后a<=c,且a<=b依然成立
if(b>c){t=b;b=c;c=t;} //执行完毕之后a<=b<=c
//检查是否能够成三角形
if(a+b>c){
//检查是否为直角三角形
if(c*c==a*a+b*b) printf("yes");
else printf("no");
} else{
printf("not a triangle");
}
return 0;
}
测试用例
输入 | 输出 | |
---|---|---|
测试1 | 3 4 5 | yes |
测试2 | 3 4 6 | no |
测试3 | 3 5 1 | not a triangle |
测试4 | 5 4 3 | yes |