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

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;
}
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧