踩了个坑,在判断循环成立条件的时候理解错了,一直报错。
题目描述
用迭代法求 平方根
公式:求a的平方根的迭代公式为: X[n+1]=(X[n]+a/X[n])/2 要求前后两次求出的差的绝对值少于0.00001。 输出保留3位小数
输入
X
输出
X的平方根
样例输入
4
样例输出
2.000
解题思路以及注意事项:
迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。
大家要有灵活运用迭代法思维,本题就是先让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;
}
以上是错误代码,
只执行了一次就gg了。
正确代码如下:
#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;
}