#include
void main()
{
int w,i;
double ss;
double x, y;
printf("enter the number!\n");
scanf("%lf",&y); /* 输入浮点型数据Y,即我们要求平方根的方程 */
x=y; /* 这里把Y赋给X是想把Y的值先保存下来 */
ss=1.0;
for(w=0;x>=1;w++)
{x=x/10;} /* 把X压缩成小数,如100.45就变成了0.10045 */
w=w-1; /* 而W即为X位数减一,以上数为例,把100.45改为0.10045则 W=2; */
for(i=1;i<=w;i++)
{ss=ss*10;} /* 如果上例,SS变成了100 ,到目前为止,以前的工作都是为了求出这个数的最高位。 */
x=0;
while(ss>1.0/10e6)
{
for(;x*x
if (x*x>y)
{
x=x-ss;
ss=ss/10;
}
if (x*x==y)
break;
}
/* 以上整个循环语句的作用是这样的,以刚才为例:把平方根定为0. */
/* 如果它的平方等于输入值,就跳出循环;否则就加上100,如果比办输入值大了,就 */
/* 取消刚才的动作即(x=x-ss;) 然后再加上10,如果大了就取消,如果小了再加,这样的一步步循环 */
printf("%lf\n",x);
getch();
}