为了账号安全,请及时绑定邮箱和手机立即绑定

求大神,哪里错了?

#include<stdio.h>

#include<math.h>

float sqrt1(float a)

{

float x0, x1;

x0=a/2; //给x0赋初值a/2 

do

{

x1=(x0+a/x0)/2;

x0=x1; //迭代求平方根

}while(fabs(x0-x1)>10e-6);

return x1;  

}

int main()

{

float a;

printf ("Please enter a:\n");

scanf ("%f", &a);

if (a>0)

{

printf ("自定义函数求解:%f\n", sqrt1(a));

printf ("库函数求解:%f\n", sqrt(a));

return 0; 

}

输入100为什么输出前一个是20多,后一个是10

但假如我把x0=a/2 下面加上迭代公式,再将do while里的复合语句颠倒就输出正确了

可是我感觉这么改并没有什么区别啊?求大神。

正在回答

1 回答

在x0=x1后x0-x1=0就直接出循环了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Linux C语言指针与内存
  • 参与学习       116475    人
  • 解答问题       250    个

指针-C语言的核心,代领大家对c语言有更加深刻的理解

进入课程

求大神,哪里错了?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信