当前位置: 代码迷 >> C语言 >> [求助]一个简单的问题
  详细解决方案

[求助]一个简单的问题

热度:98   发布时间:2007-10-23 18:21:24.0
[求助]一个简单的问题
#include "math.h"
#include "stdio.h"
int main()
{float a,b,c,area,s;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f\n",a);
printf("b=%f\n",b);
printf("c=%f\n",c);
printf("s=%f\n",s);
printf("area=%f\n",area);
return;
}
运行是OK的,可是修改成下面的程序以后
#include "math.h"
#include "stdio.h"
int main()
{float a,b,c,area,s;
scanf("%f,%f,%f",&a,&b,&c);
s=1/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f\n",a);
printf("b=%f\n",b);
printf("c=%f\n",c);
printf("s=%f\n",s);
printf("area=%f\n",area);
return;
}
就输出s=0.000000
/运算含有需要2边的类型一样一说吗? 别笑话我,真不知道哦
----------------解决方案--------------------------------------------------------
     可能是S为FLOAT类型的缘故吧
----------------解决方案--------------------------------------------------------
s=1/2*(a+b+c);

看清楚再写吧.
----------------解决方案--------------------------------------------------------
s=1/2*(a+b+c);
系统将1/2按整型相除.也就是整除,1/2当然等于0了.要是1.0/2,则先进行类型转换,FLOAT的类型要高于整形,就等于1.0/2.0,所以等于0.5,计算就有结果了.
----------------解决方案--------------------------------------------------------
s=1/2*(a+b+c);>>s=0.5*(a+b+c);
return;>>return 0;

----------------解决方案--------------------------------------------------------
以下是引用HaPpY随心在2007-10-23 19:11:46的发言:
s=1/2*(a+b+c);>>s=0.5*(a+b+c);
return;>>return 0;

啥意思? 我不明白


----------------解决方案--------------------------------------------------------
四楼说的 我明白了 谢谢了...
自学真的好难...
----------------解决方案--------------------------------------------------------
参加+,-,*,/运算的两数中只要有一个是实数或双精度数,结果都是double型。  这是书上的原话!!!
----------------解决方案--------------------------------------------------------
  相关解决方案