c语言问题,求教!

dieyoung 2002-10-23 07:13:52
#include "math.h"
#define S(a,b,c) (a+b+c)/2
#define Area(a,b,c) sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c))

void main(void)
{
int x,y,z,a;

scanf("%d,%d,%d",&x,&y,&z);
a=Area(x,y,z);
printf("\n%d,%d,%d\n",x,y,z);
printf("%d\n",a);
}
这是一个计算三角形面积的小程序,如果不加入#include "math.h"语句,输入3,4,5后
计算的结果是8,而加入#include "math.h"语句,输入3,4,5后计算结果是6,请问这是
为什么?
...全文
50 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
youki1234 2002-10-24
  • 打赏
  • 举报
回复
类型定义错误
muyangzuo 2002-10-24
  • 打赏
  • 举报
回复
正解
dippzhang 2002-10-24
  • 打赏
  • 举报
回复
因为在math.h中已经有了AREA这个函数,在你调用math.h头文件时,a,b,c就按照MATH。H中的AREA公式来计算了,所以结果应该是6; 而如果你不调用这个头文件的话,A,B,C就按照你的函数定义计算了!
解决方法是你把你定义的函数AREA换个名字在试试,我觉得换了之后的运行结果就应该一样了,但是我没有试,不知道对不对,只是我个人的理解,仅供参考!~~~ :)
林水福 2002-10-24
  • 打赏
  • 举报
回复
类型定义错误
djwinter 2002-10-24
  • 打赏
  • 举报
回复
sqrt在math.h里面吧
那么怎么会不#include不报错呢?
这样#define我总觉得有问题,太不安全了
包括s(a,b,c)是否是通过参数调用我都表示怀疑


不过程序肯定有问题
因为xyz都是整数,那么能够计算出正确的三角形面积的可能性几乎为0
345只是一个特例呀
taro75 2002-10-24
  • 打赏
  • 举报
回复
同意楼上的。a为一个随机数。
thankyouisdn 2002-10-24
  • 打赏
  • 举报
回复
原因好像是因为,如果不包含math.h,编译器不知道去调用哪一个sqrt函数,因此返回给你一个错误得数值。当你包含了头文件以后当然就可以正确得计算了。
你的所有问题都是处在sqrt函数上。我在vc下编译了一下,没有math.h得时候输出结果变成了639。
ONCE 2002-10-24
  • 打赏
  • 举报
回复
#define以后Tc2.0 不报此类型错误
asvaboy1980 2002-10-24
  • 打赏
  • 举报
回复
面积最好设成float型
fengzheng 2002-10-24
  • 打赏
  • 举报
回复
printf读出是整型
dieyoung 2002-10-24
  • 打赏
  • 举报
回复
按理说,没定义math.h文件时使用sqrt(),编译应该报错、可为什么不保错呢?

紫弧:我把所有的变量都定义成float,结果也不对。

寂寞冬天:我查了math.h头文件,里面没有Area这个函数,它也不是常量或宏名,你说的可能不对。另外,我把Area宏名换了名字,结果还是一样。 :(
vanhui 2002-10-24
  • 打赏
  • 举报
回复
暂时无法理解,我以相同方法试着调用math.h中的其他函数,好像并未出现这种情况,看来要去看看sqrt()函数的原始模式了,谁能提供阿?我一下子找不到。
dieyoung 2002-10-23
  • 打赏
  • 举报
回复
环境:win98 tc2.0

a定义成float 也不行,a为float时,结果如下:无#include "math.h",结果是
10.000000,加#include "math.h",结果是6.000000

x,y,z ,a 都定义成float ,无#include "math.h" 结果是-32636.000000
有#include "math.h",结果是6.000000
desdouble 2002-10-23
  • 打赏
  • 举报
回复
不过,很明显,至少a要定义为float型才行。
desdouble 2002-10-23
  • 打赏
  • 举报
回复
什么环境?Turbo c? VC?
drzhuzy 2002-10-23
  • 打赏
  • 举报
回复
float

69,382

社区成员

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

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