C语言高手请进,回答的满意给加分!!!

来源:百度知道 编辑:UC知道 时间:2024/06/17 07:46:19
用迭代法求x=sqrt(a),求平方根的迭代公式为Xn+1 =1/2(Xn +a/Xn ){n和n+1为下标},要求前后二次求出x的差的绝对值小于10的-5次方。
请高手帮忙看看我这么编哪有错误,谢谢!
#include "stdafx.h"
#include"stdio.h"
#include"math.h"
int main(int argc, char* argv[])
{float x1,x2,a,b;
x2=0;x1=1.0;
scanf("%f",&a);
while (fabs(b)>=1e-5){
x2=x2+1/2*(x1+a/x1);
b=fabs(x2-x1);
x1=x2;
}
printf("%f",x1);
return 0;
}
崩溃!!!照你们三位的改法,还是得不到结果!!!

大哥 我差点让你唬住了...

Xn+1 =1/2(Xn +a/Xn )

x2=x2+1/2*(x1+a/x1); // 你多加个 x2 干嘛!

我想了半天怎么编出的树还带#和字母 敢情越界了啊..

这么改:

#include "stdafx.h"
#include"stdio.h"
#include"math.h"
int main(int argc, char* argv[])
{float x1,x2,a,b;
x2=0;x1=1.0;
scanf("%f",&a);
//while (fabs(b)>=1e-5){
do{ //先进行b的计算,在进行循环判断
x2=x2+1/2*(x1+a/x1);
b=fabs(x2-x1);
x1=x2;
} while((fabs(b)>1e-5)||fabs(b)==1e-5);//>=的判断需要这么写
printf("%f",x1);
return 0;
}

你的b没设初值