给你一个非负整数 x ,计算并返回 x 的算术平方根 。 由于返回类型是整数,结果只保留整数部分,小数部分将被舍去 。用C语言编写程序
时间: 2024-09-11 08:05:03 浏览: 59
69. x 的平方根给你一个非负整数 x ,计算并返回 x 的 算术平方根 由于返回类型是整数,结果只保留 整数部分
在C语言中,可以使用`sqrt()`函数来计算给定非负整数的算术平方根。但是请注意,这个函数通常不是标准库的一部分,你需要引入`math.h`头文件才能使用。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <math.h>
int sqrt(int x) {
// 防止除以零错误,并处理0的情况
if (x == 0 || x == INT_MIN) {
return 0; // 如果输入是0,直接返回0,因为0的平方根也是0
} else {
long double result = sqrt((long double)x); // 使用长双精度浮点数保证精度
int floor_result = (int)(result); // 取整数部分
// 如果结果是正数并且四舍五入后的整数与原始值相等,则返回整数结果
if (fabs(result - floor_result) < DBL_EPSILON && result >= 0) {
return floor_result;
}
// 否则,需要检查边界情况
else if (floor_result * floor_result <= x) {
return floor_result;
} else {
return floor_result - 1; // 如果向上取整后大于原数,说明应该向下取整
}
}
}
int main() {
int x;
printf("请输入一个非负整数:");
scanf("%d", &x);
int root = sqrt(x);
printf("算术平方根是:%d\n", root);
return 0;
}
```
在这个程序中,我们首先判断特殊情况,如0或负数(`INT_MIN`代表整数范围的最小正值),然后通过`long double`类型计算更精确的结果并取整。为了确保结果准确,我们还做了额外的边界检查,防止因浮点误差导致的误判。
阅读全文