求大神,哪里错了?

来源:4-1 计算机中的数据表示方法

qq_愿时光安好_04050009

2017-01-13 16:13

#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回答

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

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

Linux C语言指针与内存

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

116475 学习 · 250 问题

查看课程

相似问题