一个c语言题,有两点不懂的地方,谢谢指教!!

来源:百度知道 编辑:UC知道 时间:2024/09/22 07:22:16
(1) 有跌代法求某正数平方根x1,已知求平方根的跌代公式为:
x0=a/2,
x1=1/2(x0+a/x0)
当x0-x1的绝对值小于1e-5时,x1为最终结果。

答案:
#include "math.h"
main()
{flaot a;
double x1,x0;
scanf("%f",&a);
if(a<0) printf("error!");
else
{x0=a/2;
x1=(x0+a/x0)/2;
do
{x0=x1; /*为什么是把x1的值赋给x0?*/
x1=(x0+a/x0)/2;
}
while(fabs(x0-x1)>1e-5); /*不是要求小于1e-5吗?怎么是>号*/
}
printf("%lf",x1);
}

x1赋给x0就是迭代的关键,上次的x1就是这次的x0。
<1e-5是结束条件,而while是要定义循环条件,因此正好相反。

对楼上答案的补充:do{}while();语句的循环条件是while中的参数为真时,题中的条件为真时会循环,所以相反时候则跳出