解题思路以及注意事项:
迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。
大家要有灵活运用迭代法思维,本题就是先让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; }
大家还有什么不懂的就在下面评论区留言
0.0分
116 人评分
你好,我的代码如下,但是怎么都运行不出来结果? main() { int a; float x,y; x=1; scanf("%f",&a); do { y=x; x=(y+a/y)/2; } while(fabs(x-y)>0.00001); printf("%.3f",x); }
我想问一下第一次为什么要给x1赋值1.0
你好,我用的是while语句,也跑成功了,代码如下 int main() { float a; float b,c; scanf("%f",&a); while(fabs(b-c)>0.00001) { c=b; b=(c+a/c)/2; } printf("%.3f",b); } 我想问,第一次循环时c还没有值,为什么不报错呢
C语言训练-阶乘和数* (C语言代码)浏览:1054 |
C二级辅导-求偶数和 (C语言代码)浏览:659 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:593 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:1152 |
C二级辅导-同因查找 (C语言代码)浏览:621 |
九宫重排 (C++代码)浏览:1406 |
C语言程序设计教程(第三版)课后习题9.8 (Java代码)浏览:1666 |
大小写转换 (C语言代码)浏览:901 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:902 |
WU-C语言程序设计教程(第三版)课后习题11.11 (C++代码)(想学链表的可以看看)浏览:1443 |
Solotravel 2018-11-30 11:05:12 |
你的a是整型,输入用了%f
福卡 2018-12-14 12:51:07 |
哈哈,谢谢