这是原题:(是翻译过来的题目可能有些偏差)
编写一个程序,计算带小数位的数字的立方根。按着这些次序:
•用户应输入一个数字(它可以包含小数位,但不能为负数)。
•开始缩小根的范围:第一个下限是1,上限是输入的数字本身,多维数据集的根必须介于两者之间。 o如果输入的数字小于1,则为下限,而1为上限。
•第一次尝试将上限和下限恰好在中间。
•如果该中心太大(因为中心³大于输入的数字),则将其用作新的上限。如果太小,请将其用作新的下限。 重复此过程,直到找到的中心足够准确为止,即,直到下限和上限之间的距离最大为0.001。然后输出找到的中心。
•通过最终输出使用pow()函数计算出的立方根来测试您的程序。
PS:这是我用牛顿迭代法写的,不确定符合不符合要求
double result(double a,double x0)
{
double x1,y;
x1=(2*x0+a/(x0*x0))/3.0;
if(fabs(x1-x0)>=0.001)
y=result(a,x1);
else
y=x1;
return y;
}
int main()
{
double x;
printf("Enter x: ");
scanf("%lf",&x);
while (x<0)
{
printf("ERROR!");
return;
}
printf("The result of %lf is %lf \n",x, result(x,1.0));
printf("The checking result is %lf\n", pow(x,0.3333333));
return 0;
}