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里的复合语句颠倒就输出正确了
可是我感觉这么改并没有什么区别啊?求大神。
在x0=x1后x0-x1=0就直接出循环了
Linux C语言指针与内存
116475 学习 · 250 问题
相似问题