一道C语言编程题目求解答!

键盘输入一个实数a,输出它的立方根。请自行设计算法编写程序,不允许调用pow函数。
假设a的立方根为x,则x3=a,问题转化求一元高次方程x3-a=0的解
迭代法!!!!!!

0

2个回答

#include
int main()
{
double a,n,m,x;
scanf("%lf",&a);
n=0;
m=a;
while(1) /*用n,m反复迭代,每次用n,m的平均值逼近*/
{
x=(n+m)/2;
if(a>0)
{
if(x*x*x<=a)
{
n=x;
}
else
m=x;
}
else
{
if(x*x*x<=a)
m=x;
else
n=x;

    }
    if((x*x*x-a<=0.000001)&&(x*x*x-a>=-0.000001))/*设置迭代的精度*/
       break;


}
printf("%lf  %lf",x,x*x*x);

}
求赞

1
qq_16907619
bwangccc 回复Justin_bibo: 输入0.008咋办 -1到1的还得考虑
接近 3 年之前 回复
Justin_bibo
鉏飞祥 回复wylasr06: 怎么说??
接近 3 年之前 回复
lht1510720220
wylasr06 这解有问题
接近 3 年之前 回复
Justin_bibo
鉏飞祥
接近 3 年之前 回复
qq_36519547
qq_36519547 http://ask.csdn.net/questions/344348看一下这道题 谢谢了
接近 3 年之前 回复
qq_36519547
qq_36519547 while(1) 中的1干嘛的 没见过
接近 3 年之前 回复

如果a=0.008,会输出什么

0
qq_16907619
bwangccc 回复Justin_bibo: 不是精度不够吧 而是根本求不出吧 因为你一开始就认为答案在0到a之间 一直在0到0.008里面找 然而它的立方根是0.2,你在那个区间怎么取平均值都得不到0.2
接近 3 年之前 回复
Justin_bibo
鉏飞祥 估计会错,精度不够。真想高精度,就用数组迭代,小数点后多少位都可以。
接近 3 年之前 回复
qq_16907619
bwangccc 回复qq_16907619: 发错地方了 我是想问楼下的
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!