c语言用二分法求解!!!求大神帮忙看看,运行之后总是等于0.

qq_33782141 2016-04-04 05:06:18
#include <stdio.h>
#include<math.h>
int main()
{
float s(float x);
float f1,f2,f0;
float x1,x2,x0;
scanf("%f,%f",&x1,&x2);
f1=s(x1);
f2=s(x2);
if ((f1*f2)>0)
{
printf("please input number again:\n");
scanf("%f,%f",&x1,&x2);
f1=s(x1);
f2=s(x2);
}
else
{
do
{
x0=(x1+x2)/2;
f0=s(x0);
if((f0*f1)<0)
{
x2=x0;
f2=f0;
}
else
{
x1=x0;
f1=f0;
}
}
while(fabs(f0)<=1e-5);

}
printf("x=%f",x0);
return 0;
}
float s(float x)
{
float z;
z=(2*x*x*x)-(4*x*x)+(3*x)-6;
return (z);


}
...全文
153 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
c初哥 2016-04-08
  • 打赏
  • 举报
回复
引用 3 楼 qq423399099 的回复:
while(fabs(f0)<=1e-5);应该改为while(fabs(f0)>=1e-5); (楼主肯定能想明白) 改正后结果:
他是不是do while循环的终止条件搞错了?
小灸舞 版主 2016-04-04
  • 打赏
  • 举报
回复
while(fabs(f0)<=1e-5);应该改为while(fabs(f0)>=1e-5);
(楼主肯定能想明白)
改正后结果:
qq_33782141 2016-04-04
  • 打赏
  • 举报
回复
引用 1 楼 yuelengdihai的回复:
x是行参,你打印x值干嘛?
我打印的是x0啊!!
cocoabird 2016-04-04
  • 打赏
  • 举报
回复
x是行参,你打印x值干嘛?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧