问答详情
源自:4-1 计算机中的数据表示方法

求大神,哪里错了?

#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里的复合语句颠倒就输出正确了

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

提问者:qq_愿时光安好_04050009 2017-01-13 16:13

个回答

  • 时轮倒影
    2017-01-18 13:53:42

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