数据操作的问题,,C语言,炒鸡简单,求解答

#include
#include
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
//double a,b,c;
//scanf("%f %f %f",&a,&b,&c);
if(a==b&&b==c)
printf("等边三角形\n");
else if((a==b&&b!=c)||(a==c&&b!=c)||(b==c&&a!=c))
printf("等腰三角形\n");
else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
printf("直角三角形\n");
else if(c>=a+b||b>=a+c||a>=b+c||a==0||b==0||c==0)
printf("这他妈怎么可能是三角形\n");
else
printf("不等边三角形\n");
return 0;
}

问题是这样的,我把三个边的数据类型改为双精度类型之后,出现只执行到直角那里。但是我要用到整型的话,这就是正常的,想想好像应该和数据在内存中的表现有关,但是具体过程还是不太明白,求高手赐教。

3个回答

scanf里全改%lf

f是float类型的输入,lf是double的

改成lf虽然解决了问题,但是在编程中要注意。计算机对浮点数的存储并不是绝对的精确存储,所以要尽量避免浮点数的此类(==)判断
---------------(勿喷)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐