怎么输入a=3.67,b=5.43,c=6.21后按回车键得到area=0?我这个求三角形面积的代

怎么输入a=3.67,b=5.43,c=6.21后按回车键得到area=0?我这个求三角形面积的代码有错吗,a,b,c是三角形三边

你试试把scanf那里面的a=b=c= 删去试试只保留三个%f追问

可以了,要写成s=1.0/2*(a+b+c)

刚刚有人说的,但是为什么啊

追答

是不是写成1就变成整数了啊,我也是刚学了一点

追问

写成1输出就是0了

追答

不好意思我也不知道

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-02-05
你这个是类型的隐式转换不理解...
s=1/2*(a+b+c)

=右边分子分母都是整形,计算的结果是一个int型的数值。
s=1.0/2*(a+b+c)这样写的话因为1.0是float类型,计算过程也是按照float计算,结果也是float型
第2个回答  2015-02-05
s=1.0/2*(a+b+c)追答

1/2等于0,所以之后s等于0了,计算出来的area也等于0了。

追问

额 ,谢谢。。但是为什么呀

追答

C语言中,整数除以整数等于整数,结果向0靠。

如:1/2等于0,3/2等于1。

还有printf中的%f改为%lf

scarf中的%f也一样

追问

谢谢

改成lf会怎么样

追答

因为你使用的是double类型,所以建议写成%lf,%f对应的是float类型,如果对double类型使用%f,会造成精度损失。

追问

刚刚洗澡去了哈,3Q

本回答被提问者采纳
第3个回答  2015-02-05
改为s=1.0/2*(a+b+c);
相似回答
大家正在搜