#include <stdio.h>
double DoSqrt(double z){
double a=1;
double b=0;
double c=0;
double g;
do{
if(b*b<z){
b+=a;
printf("b=:%g\n",b);
}
else{
c=b;
printf("c=:%g\n",c);
b-=a;
printf("b=:%g\n",b);
a/=10;
printf("a=:%g\n\n",a);
}
}while(a>0.000001); g=(b+c)/2;
printf("g = :%g\n",g); return g;
}

这里b是如何达到2却不跳出if循环,再不满足if条件的情况下再次执行,我感觉触及到我的知识盲区了
double DoSqrt(double z){
double a=1;
double b=0;
double c=0;
double g;
do{
if(b*b<z){
b+=a;
printf("b=:%g\n",b);
}
else{
c=b;
printf("c=:%g\n",c);
b-=a;
printf("b=:%g\n",b);
a/=10;
printf("a=:%g\n\n",a);
}
}while(a>0.000001); g=(b+c)/2;
printf("g = :%g\n",g); return g;
}

这里b是如何达到2却不跳出if循环,再不满足if条件的情况下再次执行,我感觉触及到我的知识盲区了

