在C语言中,计算一个数的平方根(开根号)可以使用标准库函数 sqrt(),该函数定义在 <math.h> 头文件中,以下是几种实现方式:

(图片来源网络,侵删)
方法1:使用 sqrt() 函数(推荐)
#include <stdio.h>
#include <math.h> // 包含数学函数库
int main() {
double num = 100.0;
double result = sqrt(num); // 计算100的平方根
printf("The square root of %.2f is %.2f\n", num, result);
return 0;
}
输出:
The square root of 100.00 is 10.00
方法2:手动实现平方根(牛顿迭代法)
如果不允许使用 math.h,可以手动实现平方根计算,以下是牛顿迭代法的示例:
#include <stdio.h>
double sqrt_manual(double num) {
if (num < 0) return -1; // 负数无实数平方根
if (num == 0) return 0;
double x = num; // 初始猜测值
double epsilon = 1e-7; // 精度控制
while (1) {
double next_x = 0.5 * (x + num / x);
if (x - next_x < epsilon) break; // 当两次迭代结果足够接近时停止
x = next_x;
}
return x;
}
int main() {
double num = 100.0;
double result = sqrt_manual(num);
printf("The square root of %.2f is %.2f\n", num, result);
return 0;
}
输出:
The square root of 100.00 is 10.00
方法3:使用 pow() 函数
平方根也可以表示为 5 次方,因此可以用 pow() 函数:

(图片来源网络,侵删)
#include <stdio.h>
#include <math.h>
int main() {
double num = 100.0;
double result = pow(num, 0.5); // 等价于 sqrt(num)
printf("The square root of %.2f is %.2f\n", num, result);
return 0;
}
输出:
The square root of 100.00 is 10.00
注意事项
-
编译时链接数学库:
使用sqrt()或pow()时,需在编译时链接数学库(Linux/macOS下加-lm):gcc program.c -o program -lm
-
输入验证:
如果输入可能是负数,需检查并处理错误(如返回NaN或报错)。 -
精度问题:
浮点数计算可能存在精度误差,可通过调整epsilon控制迭代精度。
(图片来源网络,侵删)
- 推荐使用
sqrt():简单高效,适合大多数场景。 - 手动实现:适用于无库环境或学习算法。
pow()替代方案:适用于需要幂运算的场景。
根据需求选择合适的方法即可!
