已知3个正数,这3个正数能否构成一个三角形的边;若能,判断三角形形状
#include<cstdio>
int main()
{
double a[4]={};
for(int i=0; i<3; i++)
{
scanf("%lf",&a[i]);
}
for(int i=0; i<2; i++)
{
if(a[i+1]<a[i])
{
a[3] = a[i];
a[i] = a[i+1];
a[i+1] = a[3];
}
}
if(a[0]>a[1])
{
a[3] = a[0];
a[0] = a[1];
a[1] = a[3];
}
for(int i=0;i<3;i++)
printf("%lf\n",a[i]);
if(a[0]+a[1]<=a[2])
{
printf("构不成三角形");
return 0;
}
if(a[0]*a[0]+a[1]*a[1]<a[2]*a[2])
{
printf("锐角三角形");
}
else if(a[0]*a[0]+a[1]*a[1]==a[2]*a[2])
{
printf("直角三角形");
}else{
printf("钝角三角形");
}
return 0;
}
本来觉得是秒杀题,发现在排序方面,还有数组方面有所欠缺。数组为什么用scanf中还要赋地址,数组本质是指针。排序中没有使用二分,感觉三个数,分三下就KO了。