c语言中的clrscr();函数的使用疑问?

lj22 2004-03-23 09:32:18
有一段程序如下:
#include<math.h>
main()
{ int a;
float x1,x2=1;
clrscr();/*就是这个*/
scanf("%d",&a);
while(fabs(x2-x1)>1e-5)
{ x1=x2;
x2=1.0/2*(x1+a/x1);
}
printf("%f",x2);
}
这是一道迭代法的题目,也就是求a的平方根,比如我输入a=2;若没有clrscr();
输出1.414,这是正确的,但有了clrscr();输入a=2提示floating point error:domain,这问大家这是怎了回事?谢谢
...全文
180 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddcen 2004-03-23
  • 打赏
  • 举报
回复
执行clrscr()后,x1地址的内容发生改变,x1值变为-NAN,即不是一个数,当然会出错。
但使用双精度,数据没溢出。
ddcen 2004-03-23
  • 打赏
  • 举报
回复
执行clrscr()后,改变x1地址数据值改变,值变为-NAN,即不是一个数,当然会出错。
但用双精度没溢出,所以不会出错。
wythust 2004-03-23
  • 打赏
  • 举报
回复
#include<math.h>
main()
{ int a;
double x1,x2=1;
clrscr();/*就是这个*/
scanf("%d",&a);
while(fabs(x2-x1)>1e-5)
{ x1=x2;
x2=1.0/2*(x1+a/x1);
}
printf("%f",x2);
}
这样也可以,至于为什么去掉clrscr()也可以,我也说不清楚
wythust 2004-03-23
  • 打赏
  • 举报
回复
x1赋个初值就OK了
ddcen 2004-03-23
  • 打赏
  • 举报
回复
要包含conio.h
x1没赋初值就使用,请给x1赋初值
不关clrscr()事
dove21 2004-03-23
  • 打赏
  • 举报
回复
库函数没有包含:加上#include <system.h>功能:清屏

happystudy 2004-03-23
  • 打赏
  • 举报
回复
我印象中,使用clrscr时一定是在常量定义完之后,要不就会出现你说的那种错误,你把他放在scanf语句后就可以了,至于原因我也不确定,可能是把以前的输入流给清空了吧。
szlhm 2004-03-23
  • 打赏
  • 举报
回复
这是编译器的问题吧,,我这里BORLAND C++ LITE什么问题都没有.

69,371

社区成员

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

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