这个的话可以不用二分法,直接枚举,就是利用区间取判断,设置一个x,在x1=x-0.05 到x2=x+0.05这个范围之内,如果说f(x1)<0&&f(x2)>0 就是说明 f(x)=0 一定在x1 和 x2之间成立,就输出x即可,

#include<stdio.h>
#include<math.h>
double n;
double f(double x){
    return n-x*x*x;
} 
int main(){
    scanf("%lf",&n);
    if(n<0){
        n=n*(-1);
        printf("-");
    }
    for(double x=0;x<=n*100;x++){
        double x1=(x-0.5)/10;
        double x2=(x+0.5)/10;
        if(f(x1)*f(x2)<0||f(x1)==0){
            printf("%.1lf",x/10);
        }
    }
    return 0;
} 

第二种的话就是利用二分法去实现的,很久之前看过的一个关于三元方程解法的题目可以用在这里做参考,其实大同小异

#include<stdio.h>
double n;
double f(double x){
    return n-x*x*x;
}
int main(){
    scanf("%lf",&n);
    if(n<0){
        n=n*-1;
        printf("-");
    }
    for(double x=0;x<=n/3;x++){
        double x1=x,x2=x+1;
        if(f(x1)==0){
            printf("%.1lf\n",x1);    
        }else if(f(x1)*f(x2)<0){
            while(x2-x1>=0.00001){
                double xx=(x2+x1)/2;
                if(f(x1)*f(xx)<=0){
                    x2=xx;
                }else{
                    x1=xx;
                }
            }
            printf("%.1lf\n",x1);
        }
    }
}