首页 > 电脑

一道关于迭代法的c语言题目,问题写在不懂的步骤旁边了,希望大佬解答,多谢

更新时间2018-03-06 21:28:38

#include <stdio.h>

#include<math.h>

int main()

{

  float x;

  float a,b;

  scanf("%f",&x);

  b = 1.0;

  while(fabs(b-a) > 0.00001)

  {

    a=b; 这一步有什么用?

  b = (a+x/a)/2;

 

  }

  printf("%0.3f ",b);

  return 0;

}


首先回溯a与b这两个变量的声明:

float a, b;

此时a与b只声明了类型和变量名,

并未初始化;

之后进行了b的初始化:

b = 1.0;

然后进入循环、

条件是以a与b代入fabs()这个函数作为参数的,

在这个fabs()函数中可能会有a与b的值变化,

于是在每一次循环起始先将a变量同步于b变量的值:

a = b;

然后再将相应的值运算结果存入b变量;

……

观察以上过程后可以分析得知:

b变量是一个结果存值容器,
a变量则是一个临时存值容器,

两个变量共同构成了一个

运算结果-->临时存值-->继续运算-->运算结果……

这样一个迭代运算的过程。

……

有更多疑问欢迎追问,

或者另开相关问题时邀请回答。

相关标签:c语言

上一篇:C#用什么dàimǎ才能gēngǎiyònghùzhànghàomīngchēng,求解

下一篇:指针将三个数排大小swap函数在调用后为什么exchange函数指针值没调换