|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#include<math.h>
main()
{
float a,b,c,sum1,sum2,sum3;
float p,area;
printf("请输入三角形三边长:\n");
scanf("%f %f %f",&a,&b,&c);
sum1=a+b;
sum2=a+c;
sum3=b+c;
if(sum1>c&&sum2>b&&sum3>a)
{ p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a);
{printf("这三条边能组成三角形,且是直角三角形,面积为%f\n",area);}
else if(a*a+b*b<c*c||a*a+c*c<b*b||b*b+c*c<a*a)
{printf("这三条边能组成三角形,且是钝角三角形,面积为%f\n",area);}
else if(a*a+b*b>c*c||a*a+c*c>b*b||b*b+c*c>a*a)
{printf("这三条边能组成三角形,且是锐角三角形,面积为%f\n",area);}
}
else
printf("这三条边不能组成三角形\n");
}
请问以上代码是哪里错误了
本帖最后由 小甲鱼的铁粉 于 2020-11-27 14:31 编辑 if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a);
他们错了
float类型定义之后后面的小数是不精确的,不可以使用==来判断是否相等
https://fishc.com.cn/forum.php?m ... p;page=1#pid5073507
具体可以看一下这个帖子
正确的如下 #include<stdio.h>
#include<math.h>
main()
{
int a,b,c,sum1,sum2,sum3;
float p,area;
printf("请输入三角形三边长:\n");
scanf("%d %d %d",&a,&b,&c);
sum1=a+b;
sum2=a+c;
sum3=b+c;
if(sum1>c&&sum2>b&&sum3>a)
{ p=(a+b+c) * 1.0/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
{printf("这三条边能组成三角形,且是直角三角形,面积为%f\n",area);}
else if(a*a+b*b<c*c||a*a+c*c<b*b||b*b+c*c<a*a)
{printf("这三条边能组成三角形,且是钝角三角形,面积为%f\n",area);}
else if(a*a+b*b>c*c||a*a+c*c>b*b||b*b+c*c>a*a)
{printf("这三条边能组成三角形,且是锐角三角形,面积为%f\n",area);}
}
else
printf("这三条边不能组成三角形\n");
}
|
|