解题思路:拿到题的第一反应是递归,但是该题利用置换思想,在while循环里设置两个变量,一个用于储存上一次循环的返回值,一个用于计算下一个值。
注意事项:对于牛顿迭代公式中的首项并无要求,因此初始化设个1即可
参考代码:
#include<stdio.h>
#include<math.h>
int main()
{
int x = 0;
scanf_s("%d", &x);
float x1 = 99, x2 = 1; //这里注意设定首项时考虑到循环体里第一步便是交换值,所以要把值赋给x2,同时x1初始化时不能也赋1,否则直接跳过循环
while (fabs(x2 - x1) >= 1e-5)
{
x1 = x2;
x2 = (x1 + x / x1) / 2;
}
printf("%.3f", x2);
return 0;
}
0.0分
3 人评分
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:679 |
C语言程序设计教程(第三版)课后习题8.8 (C++代码)浏览:583 |
gets函数前有scanf读取时候,会读取缓存回车导致出错!!!浏览:1148 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1055 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:689 |
买不到的数目 (C++代码)浏览:909 |
剪刀石头布 (C语言代码)浏览:1792 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:571 |
大神老白 (C语言代码)浏览:637 |
1162答案错误,为什么浏览:700 |