今天拿了一下以前做过的题来看,发现以前做题都是拼凑出来的,今天就让我把这个求平方根的问题讲讲吧.

 

以前是这样想:

   就拿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;
}
 

 

                     大家不要喷我哈...我也是个初学者