急!大家帮忙看看代码哪里出了错;

a3391111 2014-10-19 03:37:09
下面的代码在语法上没有出现错误,但是在运行时
area这个变量会为0
求大神回答这是为什么??、
# include <stdio.h>
# include <math.h>
int main ()

{
double x,y,z,s,area;
printf
("请输入三角形的三边边长,边长与边长之用空格隔开");
scanf
("%lf %lf %lf",&x,&y,&z);
s=1/2*(x+y+z);
if(x+y>z&&x+z>y&&y+z>x)
{

area=sqrt(s*(s-x)*(s-y)*(s-z));
printf
("你输入的 x= %.2lf,y=%.2lf,z=%.2lf所构成的三角形面积为 %.2lf\n",x,y,z,area);

}
else
{
for(;x+y<z || x+z<y || y+z<x;)
{
printf("你输入的三条边的长不能构成一个三角形\n");
printf("请重新输入三角形的三边边长,边长与边长之用空格隔开\n");
scanf("%lf %lf %lf",&x,&y,&z);

}
area = sqrt(s * (s-x) * (s-y) * (s-z));
printf
("你输入的 x= %.2lf,y=%.2lf,z=%.2lf所构成的三角形面积为 %.2lf\n",x,y,z,area);
}


system("pause");

return;
}
...全文
43 点赞 收藏 4
写回复
4 条回复
bobzhang1994 2014年10月19日
引用 1 楼 u012421456 的回复:
你看一下s的值是多少,是0 因为1/2的值取整以后就是0
s=1/2*(x+y+z);这一句中程序先计算1/2,因为1和2都是整型的,所以1/2的结果等于0,0接着作为乘数,0乘任何数得0,于是s=0。s又作为乘数参与area值的运算(area=sqrt(s*(s-x)*(s-y)*(s-z));),故area的值等于0.
回复 点赞
碼上道 2014年10月19日
自己调试一下不就知道为啥是0了
回复 点赞
百曉生 2014年10月19日
对了,楼主代码格式看起来挺不方便的,最后return 0比较好
回复 点赞
百曉生 2014年10月19日
你看一下s的值是多少,是0 因为1/2的值取整以后就是0
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告