迭代法求平方根,c=a,运行后不论输几次方都为0.25咋回事啊大佬们
#include<stdio.h>#include<math.h>
int main()
{
double a,b,c;
scanf("%f",&a);
c=a;
b=(c+a/c)/2.0;
while((b-c)>0.00001){
double temp=b;
b=(b+a/b)/2.0;
c=temp;
}
printf("%f",b);
return 0;
} 本帖最后由 jackz007 于 2022-11-6 19:29 编辑
牛顿迭代法求取平方根
#include <stdio.h>
#define abs(n) ((n) > 0 ? (n) : -(n))
int main(void)
{
double a , b ;
scanf("%lf" , & a) ;
b = a ;
while(abs(a - b * b) > 1e-15) b = (b + a / b) / 2.0 ;
printf("%.15lf\n" , b) ;
}
运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
2
1.414213562373095
D:\\C> 此代码有以下错误
#include <stdio.h>
#include <math.h>
int main() {
double a, b = 1; //此处不要 c,而且 b 可以直接初始化为 1
scanf("%lf", &a); //此处读入必须用 %lf
b = (a + 1) / 2.0; //此代码其实可以不需要
while(fabs(b * b - a) > 0.00001) {
// double temp = b; 不需要这行
b = (b + a / b) / 2.0;
//c = temp;更不需要这行
}
printf("%lf", b); //输出必须要 %lf
return 0;
}
页:
[1]