问题描述
- 数据操作的问题,,C语言,炒鸡简单,求解答
- #include
#include
int main()
{
int abc;
scanf(""%d %d %d""&a&b&c);
//double abc;
//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;
}问题是这样的,我把三个边的数据类型改为双精度类型之后,出现只执行到直角那里。但是我要用到整型的话,这就是正常的,想想好像应该和数据在内存中的表现有关,但是具体过程还是不太明白,求高手赐教。
解决方案
scanf里全改%lf
解决方案二:
f是float类型的输入,lf是double的
解决方案三:
改成lf虽然解决了问题,但是在编程中要注意。计算机对浮点数的存储并不是绝对的精确存储,所以要尽量避免浮点数的此类(==)判断
---------------(勿喷)
时间: 2024-12-05 22:40:04