请高手帮忙找一下我的程序哪里错了

当我输入4.242641,3,3,三个数时,它不是显示等腰直角三角形,而就是等腰三角形,哪里出错了?#include<stdio.h>#include<conio.h>#... 当我输入4.242641,3,3,三个数时,它不是显示等腰直角三角形,而就是等腰三角形,哪里出错了?

#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
float a,b,c;
int i;
while(1){
scanf("%f,%f,%f",&a,&b,&c);
if(a<0 || b<0 || c<0)
printf("对不起,您输入有误,三边不可以为负数\n");
else {
if(a+b>c && a+c>b && b+c>a)
{
if(a!=b && b==c && a*a!=b*b+c*c || b!=c && c==a && b*b!=c*c+a*a || c!=a && a==b && c*c!=a*a+b*b)
printf("可以形成三角形,而且为等腰三角形\n");
else if(a==b && b==c && c==a)
printf("可以形成三角形,而且为等边三角形\n");
else if(a*a==b*b+c*c || b*b==c*c+a*a || c*c==a*a+b*b)
printf("可以形成三角形,而且为直角三角形\n");
else if(fabs(a*a-b*b-c*c)<1e-6 && b==c || fabs(b*b-c*c-a*a)<1e-6 && c==a || fabs(c*c-a*a-b*b)<1e-6 && a==b)
printf("可以形成三角形,而且为等腰直角三角形\n");
else printf("可以形成一般的三角形\n");
}
else
printf("不可以形成三角形\n");
printf("是否继续?y/n\n");
getchar();
if(getchar()=='n')break;
else printf("继续输入\n");}
}
}
展开
 我来答
熊世雄
2010-10-24 · TA获得超过105个赞
知道答主
回答量:116
采纳率:0%
帮助的人:116万
展开全部
你的a b c变量是浮点精度的,4.242641,3,3,这3边的精度达不到等腰直角的要求,即程序在运算时,a的平方不等于b c平方之和。建议不要用小数的边长去验证,精度难把握。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式