double 精度太高了,一些小的数值忽略了不能显示,你改用float就行了!
#include<stdio.h>
#include<math.h>
#define E0 0.00005
int main(void)
{
float sq_root(float f);
float f;
printf("请输入一个要开平方的数:\n");
scanf("%f",&f);
printf("所输入数的开平方是:%.4f\n",sq_root(f));
return 0;
}
float sq_root(float f)
{
float x;
x=f;
x=(float)((x+f/x)*0.5);
while(fabs(x*x-f)>=E0)
x=(float)((x+f/x)*0.5);
return x;
}