解题思路:这道题不会做,可能只是对迭代法不太熟悉,迭代法呢,是先自定一个初值x0,作为a的平方根值,在我们的程序中取a/2作为x0的初值;利用迭代公式求出一个x1。此值与真正的a的平方根值相比,误差很大。把新求得的x1代入x0中,准备用此新的x0再去求出一个新的x1,利用迭代公式再求出一个新的x1的值,也就是用新的x0又求出一个新的平方根值x1,此值将更趋近于真正的平方根值。比较前后两次求得的平方根值x0和x1,如果它们的差值小于我们指定的值,即达到我们要求的精度,则认为x1就是a的平方根值(以上来自百度百科),可能有人还是看不懂,比较复杂,那么我们来看代码吧
注意事项:迭代法的用法
参考代码:
#include <stdio.h>
int main() {
double x0,x1; //首先我们将平方根值定义为double
int a;
scanf("%d",&a);
x0=a/2.0; //第一次的x0我们用a/2
while(1){ //这里我们用while,我习惯用for循环,这里while好点
x1=(x0+a/x0)/2; //这里是迭代法公式
if(x0-x1<0.00001) break; //如果精度小于指定值,停止循环,我们已经求出来了
else x0=x1; //将误差较大的x1赋值给x0
}
printf("%0.3f\n",x1);
return 0;
}
如果有不懂,或者不对的地方,私聊或留言
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复