用二分法求2*x*x*x-4*x*x+3*x-6=0在(-10,10)之间的根。(用c语言编写)能帮我看看我哪里错了吗??

#include<stdio.h>#include<math.h>doublef(doublex){return2*x*x*x-4*x*x+3*x-6;}intmain(... #include<stdio.h>
#include<math.h>
double f(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
int main()
{
float a,b,c,d,e,g;
a=-10;
b=10;
do
{c=(a+b)/2;
d=f(c);
e=f(a);
g=f(b);
if (d=0)break;
if (d*e>0) a=c;
if (d*g>0) b=c;
}
while (fabs(a-b)>1e-5);

printf("%f\n",c);
return 0;
}
展开
 我来答
匿名用户
2011-11-17
展开全部
if (d=0)
应该是d==0, 浮点运算判断值为0应该是(d<0.000001&&d>-0.000001)
d=0是一个赋值的语句,总是真的,所以总会break;死循环
terranlong
2011-11-17 · TA获得超过7295个赞
知道大有可为答主
回答量:2660
采纳率:66%
帮助的人:4287万
展开全部
已改,看注释
#include<stdio.h>
#include<math.h>
double f(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
int main()
{
double a,b,c,d,e,g; //改成double类型
a=-10;
b=10;
do
{
c=(a+b)/2;
d=f(c);
e=f(a);
g=f(b);
if (d >= 0.000001 && d <= 0.000009) //d=0是赋值
break;
if (d*e>0)
a=c;
else if (d*g>0)
b=c;
}
while (fabs(a-b)>1e-5);

printf("%lf\n",c); //要%lf
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式