TC2.0中的fabs是什么意思?

dedema 2001-12-21 06:33:24
#include "stdio.h"

main()
{float x,y,z;
clrscr();
/*scanf("%f%f",&x,&y);*/
x=3.6;y=2.4;
z=x/y;
while(1)
{if (fabs(z)>0.1)
{x=y;y=z;z=x/y;
}
else break;
}
printf("y=%f\n",y);

getch();
}
以上的程序进行的结果是2.400000,真是想不通为什么会等于2.4?
如果给它加上#include "math.h"
那么运行结果就成了17.572384,调试结论是fabs的含义是关键,如果加上math.h这个头文件,而它表示返回浮点数的绝对值,那么如果没有这个头文件呢?表示什么含义?
更奇的是,如果x,y的值改用scanf来输入,如下所示,则结果就变为1.5!怎么回事啊?
#include "stdio.h"
main()
{float x,y,z;
clrscr();
scanf("%f%f",&x,&y);
/*x=3.6;y=2.4; */
z=x/y;
while(1)
{if (fabs(z)>0.1)
{x=y;y=z;z=x/y;
}
else break;
}
printf("y=%f\n",y);
getch();
}
...全文
287 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
dedema 2001-12-26
  • 打赏
  • 举报
回复
C语言程序设计辅导与习题集
第50页练习的选择题!原题如下:
20.执行以下程序后,如果从键盘上输入
3.6 2.4 <回车>,则输出结果为
(A) 1.000000 (B) 1.5000000 (C) 2.000000 (D) 2.500000
main()
{float x,y,z;
scanf("%f%f",&x,&y);
z=x/y;
while(1)
{if (fabs(z)>0.1)
{x=y;y=z;z=x/y;}
else break;
}
printf("%f\n",y);
}

dedema 2001-12-23
  • 打赏
  • 举报
回复
努力吧
nandy_lau 2001-12-22
  • 打赏
  • 举报
回复
我认为关键在于math.h,因为fabs这个函数在math.h有函数原形.
如果不包含他.也不错,但他将产生错的结果.
dedema 2001-12-22
  • 打赏
  • 举报
回复
呵。。。呵。。。。楼上的啊。你真的会吗?
你去试试吧。楼上的楼上们,你们去试试吧。!我在等你们的好消息!
rhesus 2001-12-22
  • 打赏
  • 举报
回复
在t3.0里你第一个一定出错!我想在2.0里应该也通不过,因为clrscr();fabs(z)没有include"math.h"就没意义了
huangry 2001-12-22
  • 打赏
  • 举报
回复
好不容易看到一道我会的问题,结果我还是来晚了,哎!
  • 打赏
  • 举报
回复
呵呵,大家都说了,偶没什么好讲的了。
greening 2001-12-21
  • 打赏
  • 举报
回复
我这个菜鸟只想大叫一声:我来晚了!呵呵。
dedema 2001-12-21
  • 打赏
  • 举报
回复
你们都错了。。。如果有math.h这个头文件,那就是浮点数的绝对值。
但要是没有这个头文件,程序也不出错的。那它表示什么意思呢?
cdldxy 2001-12-21
  • 打赏
  • 举报
回复
同感
johnny_jiang 2001-12-21
  • 打赏
  • 举报
回复
楼上都说过了,我本来还像装装高手。哎!!!!
lanying 2001-12-21
  • 打赏
  • 举报
回复
如果是c++的话,就只有abs了
gernal_dn 2001-12-21
  • 打赏
  • 举报
回复
f指浮点,abs是“绝对”的缩写,惯例了。
Wesely 2001-12-21
  • 打赏
  • 举报
回复
math.h
regit 2001-12-21
  • 打赏
  • 举报
回复
取浮点型的绝对值

70,038

社区成员

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

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