#include <stdio.h> #include <math.h> /***** 以下一行有错误 *****/ void fun(double a, double x0) { double x1, y; x1=(x0+a/x0)/2.0; /***** 以下一行有错误 *****/ if(fabs(x1-x0)<=0.00001) y=fun(a,x1); else y=x1; return y; } int main() { double x; scanf("%lf",&x); printf("The square root of %lf is %lf\n",x,fun(x,1.0)); return 0; }利用函数求平方根C语言
时间: 2023-07-23 22:15:31 浏览: 198
c语言水仙花练习#include<stdio.h>
5星 · 资源好评率100%
以下是修正后的代码:
```c
#include <stdio.h>
#include <math.h>
double fun(double a, double x0) {
double x1 = (x0 + a / x0) / 2.0;
if(fabs(x1 - x0) <= 0.00001)
return x1;
else
return fun(a, x1);
}
int main() {
double x;
scanf("%lf", &x);
printf("The square root of %lf is %lf\n", x, fun(x, 1.0));
return 0;
}
```
修正说明:
1. 函数 `fun` 的返回值类型应为 `double`;
2. 在 `fun` 函数中,当 `fabs(x1-x0)<=0.00001` 时,应该直接返回 `x1`,而不是再次递归调用 `fun` 函数;
3. 在递归调用 `fun` 函数时,应该写成 `return fun(a, x1)`。
该代码使用了递归的方式求解平方根,如果对递归不熟悉,建议使用循环的方式实现。
阅读全文