?判断三角形的类型,根据输入的三角形的三条边判断三角形的类型,并依次输出其类型和面积。
如果输入的信息不是三角形 则输出?no triangle。
输入示例:
1
3 4 5
?输出示例:
right triangle,6.0
代码:?
```C
#include<stdio.h>
#include<math.h>
int main(){
int i,n;
double a,b,c,s,A;
scanf("%d",&n); // 输入将进行判断的三角形组数
for(i=1;i<=n;i++){
scanf("%lf%lf%lf",&a,&b,&c); // 输入三角形的三边长度
if(a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a){ //判断是不是三角形
s=(a+b+c)/2; //计算三角形半周长
A=sqrt(s*(s-a)*(s-b)*(s-c)); //利用海伦公式计算三角形面积
if(a==b && a==c) printf("equilateral triangle,%.1lf\n",A);
// 首先判断是不是等边三角形
else if(a==b || a==c || b==c){
if(fabs(a*a + b*b-c*c )<0.001|| fabs(a*a + c*c == b*b)<0.001 || fabs(c*c + b*b == a*a)<0.001) // 如果有两边相等则先判断是不是等腰直角三角形
printf("isosceles right triangle,%.1lf\n",A);
else printf("isosceles triangle,%.1lf\n",A); // 不满足勾股定理即为等腰三角形
}
else if(fabs(a*a + b*b-c*c )<0.001|| fabs(a*a + c*c == b*b)<0.001 || fabs(c*c + b*b == a*a)<0.001) //判断是不是直角三角形
printf("right triangle,%.1lf\n",A);
else printf("general triangle,%.1lf\n",A); //以上条件均不满足则为普通三角形
}else printf("no triangle"); //不满足任意两边之和大于第三边的条件则输出不是三角形
}
return 0;
}
```
补充知识:
海伦公式:
?
|