请完成下列Java程序。程序的功能是利用迭代法求一个数的平方根(求平方根的迭代公式为:Xn+1=1/2(Xn+a/Xn)).注意:请勿改动main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。public class PingFangGen{public static void main(String args[]){System. out. println(Math, sqrt(2.0));}static double sqrt(______){double x=1.0do{_______

题目

请完成下列Java程序。程序的功能是利用迭代法求一个数的平方根(求平方根的迭代公式为:Xn+1=1/2(Xn+a/Xn)).

注意:请勿改动main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。

public class PingFangGen{

public static void main(String args[]){

System. out. println(Math, sqrt(2.0));

}

static double sqrt(______){

double x=1.0

do

{

_______

}

while( Math. abs(x*x-a)/a>le-6)

return x;

}

}


相似考题
更多“请完成下列Java程序。程序的功能是利用迭代法求一个数的平方根(求平方根的迭代公式为:Xn+1=1/2(Xn ”相关问题
  • 第1题:

    补充程序Ccon0310.C,使其实现用递归算法求平方根。求平方根的迭代公式如下:


    /**/doublemysqrt(double,double);/**/
    X1=/**/(x0+a/x0)/2;/**/
    Ymysqrt(/**/a,x1/**/);

  • 第2题:

    程序test.C的功能是:利用以下所示的简单迭代方法求方程cos(x).x=0的一个实根。迭代公式:Xn+1=cos(xn)(n是迭代次数) 迭代步骤如下: (1)取X1初值为0.0; (2)X0=X1,把X1的值赋给x0; (3)X1=cos(x0),求出一个新的x1; (4)若x0.X1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2); (5)所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。 请编写函数countValue实现程序的功能,最后main函数调用函数writeDAT把结果输出到文件0ut.dat中。注意:部分源程序存放在test.C文件中。 请勿改动主函数main和输出数据函数writeDAT的内容。


    正确答案:
    【审题关键句】Xn+1=cos(Xn)的迭代计算。
    【解题思路】
    ①因为方程cos(x).x=0的根为实数,所以定义两个双精度型变量x0,x1。并把变量x1的初值设为0.0。
    ②根据题目中给出的求方程一个实根的迭代算法,在while循环中,首先把变量x1的值赋给x0,然后利用表达式cos(xO)
    求出一个值x1,再调用vc6.0的求绝对值的库函数fabs0,判断如果x0与x1差的绝对值小于0.000001,就认为x1的值是方程cos(x).x=0的一个实根,此时退出循环,把xl的值返回。
    【参考答案】

  • 第3题:

    2、求两个数平方和的平方根(求直角三角形的斜边长度)。


    正确

  • 第4题:

    下列给定程序中,函数fun()的功能是:应用递归算法求某数a的平方根。求平方根的迭代公式如下:

    例如,2的平方根为1.414214。

    请改正程序中的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    include <math. h>

    include <stdio. h>

    /*************found**************/

    fun(double a,double x0)

    { double xl,y;

    xl= (x0+a/x0)/2.0;

    /*************found**************/

    if (fabs (xl-x0) >0.00001)

    y=fun (a, xl);

    else y=x1;

    return y;

    }

    main ( )

    { double x;

    printf("Enter x: "); scanf("%1f",&x);

    printf ("The square root of %1f is %1f\n",

    x, fun(x,l.O));

    }


    正确答案:(1)错误:fun(double adouble x0) 正确:double fun(double adouble x0) (2)错误:if(fabs(x1-x0)>0.00001) 正确:if(fabs(x1-x0)>=0.00001)
    (1)错误:fun(double a,double x0) 正确:double fun(double a,double x0) (2)错误:if(fabs(x1-x0)>0.00001) 正确:if(fabs(x1-x0)>=0.00001) 解析:用C语言求平方根的方法一般有两种经典的算法,它们分别是迭代法和递归法,本题要求用递归法。该程序采用了if语句,错误在于if语句的判断条件,程序的含义是当迭代结果差小于误差时进行循环,故正确的应该是 if(fabs(x1-x0)>=0.00001)。

  • 第5题:

    给定程序MODll.C中函数fun的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下:

    例如,a为2时,平方根值为:1.414214。

    请改正程序中的错误,使它能得出正确结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。


    正确答案:(1)double fun(double a double x0)(2)if(fabs(x1-x0)>0.0 O001 )
    (1)double fun(double a, double x0)(2)if(fabs(x1-x0)>0.0 O001 ) 解析:(1)主函数中“fun(x,1.0)”,x是double型变量,1.0是浮点数,可知fun有两个double型参数,而第一标识下“dounle”不是C语言关键字,所以应将“double fun(doublea,dounle x0)”改为“double fun(double a,double x0)”。
    (2)第二个标识下的if语句是判断进行递归运算的条件,第二标识下变量x0没有定义,根据题意,这里是判断x1和x0的差值的绝对值是否比0.00001大,所以第二个标识下“ifi[fabs(x1-xo)>0.0