c语言用迭代法求根号
时间: 2024-11-22 07:45:52 浏览: 26
开根号的几种算法实现
5星 · 资源好评率100%
在C语言中,可以使用牛顿迭代法(Newton-Raphson Method)来估算一个数的平方根,尤其是对于浮点数,因为C标准库中并没有提供直接计算平方根的函数sqrt()。这里是一个简单的迭代算法示例:
```c
#include <stdio.h>
#include <math.h> // 使用这个头文件获取fabs()函数,用于取绝对值
double sqrt_iterative(double num, double epsilon = 1e-6) {
if (num < 0)
return -1; // 对负数返回错误,因为它们没有实数平方根
double guess = num / 2.0;
while (fabs(guess * guess - num) > epsilon) { // 当近似值满足精度要求时停止迭代
guess = (guess + num / guess) / 2.0;
}
return guess;
}
int main() {
double input;
printf("请输入一个正数:");
scanf("%lf", &input);
double result = sqrt_iterative(input);
if (result != -1)
printf("输入数的平方根大约是:%lf\n", result);
else
printf("无法计算负数的平方根。\n");
return 0;
}
```
在这个程序中,我们从`num / 2`开始猜测,然后不断更新猜测值,直到新旧猜测之差小于预设的精度`epsilon`。如果输入的是负数,函数会返回-1表示错误。
阅读全文