3509132171 发表于 2022-11-6 19:04:02

迭代法求平方根,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:06:24

本帖最后由 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>

zhangjinxuan 发表于 2022-11-6 20:04:12

此代码有以下错误
#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]
查看完整版本: 迭代法求平方根,c=a,运行后不论输几次方都为0.25咋回事啊大佬们