今天朋友问我一道使用迭代法求a的平方根的题,感觉受益匪浅,与诸君相分享
首先我们来看一下题目
我们也无需了解迭代法是什么原理,根据这个题目可以分析得到,需要使用while循环,下面是我的代码实践
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{float a, b, xn,xm;//定义变量printf("根号a的值为:>");//打印提示可不要scanf("%f", &a);//输入axn = 0.1, xm = 0.11;//xn与xm可以随便赋值,只需xm - xn的绝对值满足小于0.001即可while (abs(xn, xm) > 0.001)//循环结构{xm = (a / xn + xn) / 2;//迭代法的式子b = xm;//①xm = xn;//②xn = b;//③//①②③是交换xn与xm的方法}printf("%f\n", xm);//打印结果
}
当然有的时候我们可能会忘记求绝对值的abs()函数,那么就需要自己手写abs()了
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
float abs(float xn, float xm)
{if (xm - xn > 0)return (xm - xn);elsereturn (xn - xm);
}
int main()
{float a, b, xn,xm;//定义变量printf("根号a的值为:>");//打印提示可不要scanf("%f", &a);//输入axn = 0.1, xm = 0.11;//xn与xm可以随便赋值,只需xm - xn的绝对值满足小于0.001即可while (abs(xn, xm) > 0.001)//循环结构{xm = (a / xn + xn) / 2;//迭代法的式子b = xm;//①xm = xn;//②xn = b;//③//①②③是交换xn与xm的方法}printf("%f\n", xm);//打印结果
}
以上是加上abs()的代码;