注册 登录
编程论坛 C语言论坛

求答案救急

wakuwaku 发布于 2023-05-25 12:41, 717 次点击
用迭代法求x的平方根y,x由键盘输入,利用下列迭代公式计算。
        y(n+1)=1/2(y(n)+x/y(n))<br>
初值y(0)=x/2,精确到|y(n+1)-y(n)|<0.0001。
具体要求如下:点击“试题文件夹”按钮进入,打开项目,然后编写程序并进行调试。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
     double x,y0,y;
     scanf("%lf",&x);
     if(x<0)
     {
         printf("输入的数不能小于0!\n");
         system("pause");
         return;
     }
     y0=x/2;
     y=0.5*(y0+x/y0);
     /*************代码开始**********/



    /*************代码结束**********/
    printf("%f的平方根为%f\n",x,y);
    system("pause");
}

【注意】:部分源程序在文件PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在/*****代码开始****/到/****代码结束****/之间填入缺省的若干语句,并且在该语句块中不允许声明新的变量以及不允许写printf输出语句。

2 回复
#2
rjsp2023-05-25 14:44
求答案救急
正在考试吗?考试作弊是不对的

精确到|y(n+1)-y(n)|<0.0001
那结果是y(n),还是y(n+1)?题目出得一点儿都不严谨,连话都不能说清楚。
再看代码 ---  void main()? system("pause")?--- 愧为人师。

demo,仅供参考
程序代码:
#include <stdio.h>
#include <math.h>

int main( void )
{
    double x;
    if( scanf("%lf",&x)!=1 || x<0 )
    {
        puts( "输入错误." );
        return 1;
    }

    double y;
    for( y=x/2; fabs(y-x/y)>=0.0002; y=(y+x/y)/2 );

    printf( "%f的平方根为%.4f\n", x, y );
}
#3
aaaabbbl2023-05-25 16:02

/*************代码开始
for(;fabs(y0-y)>=0.0001;)
{
y0=y;
y=0.5*(y0+x/y0) ;
}
代码结束
1