转:http://blog.csdn.net/shawnjsp/article/details/6249093
今天主要实现的sqrt,即开方功能。一开始也没有什么头绪,在csdn的论坛上看到解决办法,思路简单,但是方法很奇妙。自己稍微添加其他部分,sqrt功能就实现了。
#include<Stdio.h>
#include<Conio.h>
int main(void)
{
double _sqrt(double ); /*使用函数原型,即不带参数名,可以减少错误*/
double n,s;
printf("Input number:");
scanf("%lf",&n); /*double 输出要用lf*/
s=_sqrt(n);
printf("The result is:%3.2lf",s); /*double 格式化输出3.2lf*/
getch();
return 0;
}
double _sqrt(double a)
{
double x,y;
x=0.0;
y=a/2;
while(x!=y)
{
x=y;
y=(x+a/x)/2;
}
return x;
}
这段代码主要是double _sqrt(double a)的函数体,从主函数main中传递用户输入的数字后,利用逼近的方法,判断两个数是否相等,这样就解决了开方问题。