Data_Structure/作業/unit1/binary-search-square-root/main.c

53 lines
974 B
C
Raw Normal View History

2025-01-20 21:25:33 +08:00
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int i;
double precision = 1e-10 , x;
printf("***<2A><><EFBFBD>Jx<4A><78>(x>0)<29>p<EFBFBD><EFBFBD><E2A5AD><EFBFBD><EFBFBD>***\n");
2025-01-20 21:30:53 +08:00
printf("<EFBFBD><EFBFBD><EFBFBD>Jx<EFBFBD><EFBFBD>=> ");
2025-01-20 21:25:33 +08:00
scanf("%lf",&x);
double mid , lower , upper;
2025-01-20 21:30:53 +08:00
2025-01-20 21:25:33 +08:00
if(x<0){
printf("<EFBFBD><EFBFBD><EFBFBD>~! X<>Ȥ<EFBFBD><C8A4><EFBFBD><1");
return 1;
}
if(x>1){
lower=0 , upper=x , i=0;
while (upper - lower > precision) {
mid = (lower + upper) / 2.0;
printf("#%d\t[%.10f,%.10f]\t<EFBFBD><EFBFBD>=%.10f\n",i+1,lower,upper,mid);
i++;
if (mid * mid > x) {
upper = mid;
} else {
lower = mid;
}
}
}
if(x<1){
2025-01-20 21:30:53 +08:00
lower=x , upper=1 ,i=0;
2025-01-20 21:25:33 +08:00
while (upper - lower > precision) {
mid = (lower + upper) / 2.0;
printf("#%d\t[%.10f,%.10f]\t<EFBFBD><EFBFBD>=%.10f\n",i+1,lower,upper,mid);
i++;
if (mid * mid > x) {
upper = mid;
} else {
lower = mid;
}
}
}
2025-01-20 21:30:53 +08:00
printf("%f<><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڬ<EFBFBD>%.10f\n",x,mid);
2025-01-20 21:25:33 +08:00
printf("sqrt(%f)<29><><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47>%.10f\n",x,sqrt(x));
return 0;
}