C语言循环控制

描述

用迭代方法求一个数的平方根。(谭浩强 C 语言 第三版 129 页第 6.11 题)

题目

用迭代法求 x = √a 。求平方根的迭代公式如下,要求前后两次求出的 x 的差的绝对值小于 10 的 -5 次方。

14_6.11题目.png

题目解决思路

我们可以先假设一个 x 的初始值是 x0 ,用以上的公式楸树 x 的下一个值 x1,再将 x1 代入上面的公式,求出 x2。继续计算下去,直到前后两次求出的 x 值 ( xn 和 xn+1)满足以下条件 | xn+1 - xn| < 1/(10 * 10 * 10 * 10 * 10 )

代码具体实现

#include <stdio.h> #include <math.h> void main() { printf("嗨客网(www.haicoder.net)\n\n"); float a, x0 , x1; printf("请输入一个正整数:"); scanf("%f",&a); x0 = a/2; x1 = ( x0 + a/x0) / 2; do { x0 = x1; x1 = (x0 + a/x0)/2; } while(fabs(x0 - x1) >= 1e-5); printf("%5.2f 的平方根结果为:%8.5f\n",a,x1); }

运行后,控制台输出如下:

15_6.11答案.png

这里我们引入了 C 语言的数学运算包 math.h。我们按照公式从 x0 开始计算。这边也用到了 fabs 函数,用来计算绝对值。