用二分法求方程2x*x*x-4x*x+3*x-6=0在(-10,10)之间的根(C程序设计——谭浩强第六章习题)

#include<stdio.h>#include<stdlib.h>#include<math.h>intmain(){floatx,x0,x1,y0,y1,y;x0=... #include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float x,x0,x1,y0,y1,y;
x0=-10;
x1=1;
do
{
y0=2*x0*x0*x0-4*x0*x0+3*x0-6;
y1=2*x1*x1*x1-4*x1*x1+3*x1-6;
if(y0*y1>0)
{
printf("there is no root between %.0f and %.0f\n",&x0,&x1);
return 0;
}
else if(y0*y1==0)
{
if(y0==0)
{
printf("the value is %.0f \n",&x0);
}
else
{
printf("the value is %.0f \n",&x1);
}
}
else if(y0*y1<0)
{
x=(x0+x1)/2;
y=2*x*x*x-4*x*x+3*x-6;
if(y*y0>0)x0=x;
else x1=x;
}
}while(fabs(y1-y0)>10e-3);
printf("x= %1.0f ",x);
system("pause");

以上是我的程序,大家鉴定一下有什么问题。
展开
 我来答
石头HvM5
2010-05-28
知道答主
回答量:24
采纳率:0%
帮助的人:0
展开全部
有五个问题:
1.悬赏分值实在太低!
2.二分法中的初值设置不正确,应该是 x0=-10; x1=10;
3。printf("x= %1.0f ",x); 显示的数位太少,无法显示其精度
4. printf("there is no root between %.0f and %.0f\n",&x0,&x1); &x0表示的是变量x0的地址,应该将&x0改为x0
5.对于情况y0*y1==0,也应该用return 0; 提前结束程序,否则会出现死循环( 让x0=2,x1=10,就会出现死循环,并且显示的结果为0)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式