3350 - 习题5-13 迭代法求平方根

输入一个非负实数a,用迭代法求平方根

求平方根的迭代公式为

要求前后两次求出的x的差的绝对值小于10<sup>-5</sup>

从键盘输入非负实数a和迭代初值x0,输出满足条件的x<sub>n+1</sub>

C数学库中有求绝对值的函数fabs.

题目输入

非负实数a和迭代初值x0(要求double类型)

题目输出

输入非负实数的平方根,保留6位小数,末尾换行。

输入/输出样例

题目输入

10 3

题目输出

3.162278

C语言解答

#include <stdio.h>
#include <math.h>
int main()
{
  double a, x, y;
  scanf("%lf %lf", &a, &x);
  y = x + 1;
  while(fabs(x - y) >= 0.00001)
  {
    y = x;
	x = (y + a / y)/2.0;
  }
  printf("%.6lf\n", x);
  return 0;
}

C++解答

#include<stdio.h>
#include<math.h>

int main()  
{
  float x0,x1,a;  
  scanf("%f",&a); 
  x1=a/2;  
  do  
  {
    x0=x1;x1=(x0+a/x0)/2;
  }  
  while(fabs(x0-x1)>=0.00001); 
  printf("%f\n",x1); 
}  
时间限制 1 秒
内存限制 12 MB
讨论 统计
上一题 下一题