给定一个浮点数n,求它的三次方根。
输入格式
共一行,包含一个浮点数n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留6位小数。
数据范围
−10000≤n≤10000
输入样例:
1000.00
输出样例:
10.000000
// 方法1 正负数区别对待
#include <stdio.h>
#include <math.h>
#define eps 0.00000001 //精度再小答案就不对了
int main(){
double n,i=0,j,sign=1; //sign符号位
scanf("%lf",&n);
if(n<0){ //负数变为正数 方便二分时判断方向
sign=-1;
n=-n;
}
if(n>1) j=n; //如果n>1 则结果肯定在0~n之间
else j=1; //否则1>n>0 结果肯定在0~1之间
double k=(i+j)/2,t=k*k*k; //k二分 t计算三次方
while(fabs(t-n) >= eps){ //t与n的差值的绝对值大于精度时
if(t>n) j=k; //因为已经肯定是正数了 所以才能这样判断 因为正数负数判断是反着的
else i=k;
k=(i+j)/2; //二分找下个点
t=k*k*k;
}
k*=
该博客介绍如何求解浮点数的三次方根问题,提供了三种方法:1. 正负数区别对待;2. 整个区间直接采用二分法;3. 直接调用C语言的库函数`cbrt()`。内容包括输入输出格式、数据范围以及样例解析。
最低0.47元/天 解锁文章

325

被折叠的 条评论
为什么被折叠?



