今天拿了一下以前做过的题来看,发现以前做题都是拼凑出来的,今天就让我把这个求平方根的问题讲讲吧.
以前是这样想:
就拿2来举例:先拿1去试,再拿算过一次的结果去试,就这样试下去,直到最后得到结果,然后就一股脑的去百度搜答案,结果找到了这个公式: x=(a/x+x)/2.0,这里a=2,x肯定初始值是1咯,第一次运行之后x=1.5,第二次是1/2(2÷1.5+1)........
好了,开始写程序吧:
#include <stdio.h>
double thisfabs(double x)//算绝对值
{
if(x>=0) return x;
else return -x;
}
double thissqrt(double a,double c)//a是开方数 c是精度,如0.00001
{
double x=a/2.0;//以前是拿1做为初始值,现在知道了缩小范围
do
{
x=(a/x+x)/2.0;
}while(thisfabs(a-x*x)>c);//当还在精度范围外就继续运算
return x;
}
int main()
{
double x;
while(scanf("%lf",&x)==1)
printf("The square root of %lf is %lf\n",x,thissqrt(x,0.0000001));
return 0;
}
大家不要喷我哈...我也是个初学者