Mister-小方


私信TA

用户名:1104986125

访问量:246288

签 名:

如此英俊为哪般

等  级
排  名 4
经  验 36719
参赛次数 1
文章发表 68
年  龄 19
在职情况 学生
学  校 大连交通大学
专  业 车辆工程

  自我简介:

TA的其他文章

解题思路以及注意事项:

  1. 迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。

  2. 大家要有灵活运用迭代法思维,本题就是先让x=(1+4/1)/2=2.5;然后第二次x=(2.5+4/2.5)/2=2.05。。。如此下去就会越来越接近2是不是!就跟开方一样。直到最后进度满足了就退出循环。

实例代码:

#include"stdio.h"
#include"math.h"                      //包含fabs()函数的头文件,别忘了加
int main()
{
    int a;
    double x=1.0,x1;
    printf("请输入需要计算的数\n");
    scanf("%d",&a);
    do
    {
        x1=x;
        x=(x1+a/x1)/2;
    }
    while(fabs(x-x1)>1E-5);           //fabs()绝对值函数
    printf("%lf",x);
    return 0;
}

大家还有什么不懂的就在下面评论区留言


 

0.0分

116 人评分

  评论区

你好,我的代码如下,但是怎么都运行不出来结果?
main()
{
	int a;
	float x,y;
	x=1;
	scanf("%f",&a);
    do
    {
    	y=x;
    	x=(y+a/y)/2;
    }
    while(fabs(x-y)>0.00001);
    printf("%.3f",x);
}
2018-11-13 21:33:43
我想问一下第一次为什么要给x1赋值1.0
2018-06-01 23:45:46
为什么要调用fabs,一定要绝对值,求解
2018-05-06 17:16:00
我想问下,为什么要给x赋值啊。。。。。。
2018-02-03 22:16:04
你的答案没有保留三位小数。。
2017-10-06 15:58:35
你好! 
为什么输出结果是2.5;不是一直循环下去了吗
2017-08-31 11:25:49
你好,我用的是while语句,也跑成功了,代码如下
int main()
{
 float a;
 float b,c;
 scanf("%f",&a);
 while(fabs(b-c)>0.00001)
 {
  c=b;
  b=(c+a/c)/2;
 }
 printf("%.3f",b);
}
我想问,第一次循环时c还没有值,为什么不报错呢
2017-07-25 15:14:09