C语言 麻烦看一下

来源:百度知道 编辑:UC知道 时间:2024/05/12 21:23:33
#include<stdio.h>
float f(float x)
{
float z;
z=x*x*x+2*x+6;
return z;
}
float xdz(float x1,float x2)
{
float x;
x=(f(x1)*x2-f(x2)*x1)/(f(x1)-f(x2));
return x;
}
void main()
{
float x,x1,x2,y;
do
scanf("%f,%f",&x1,&x2);
while(f(x1)*f(x2)<0);
x=xdz(x1,x2);
y=f(x);
if(y<0.0001||y>-0.0001)
printf("%f\n",x);
else
do
{
if(x1*x2>0)
x1=x;
else
x2=x;
x=xdz(x1,x2);
y=f(x);
}
while(y>0.0001||y<-0.0001);
printf("%f\n",x);
}
自己编的求方程x*x*x+2*x+6=0的根
结果不对。

#include<stdio.h>
#include<math.h>
float f(float x)
{
float y;
y=x*x*x+2*x+6;
return y;
}
float xpoint(float x1,float x2)
{
float y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return(y);
}
float root(float x1,float x2)
{float x,y,y1;
y1=f(x1);
do
{
x=xpoint(x1,x2);
y=f(x);
if(y*y1>0)
{
y1=y;
x1=x;
}
else
x2=x;
}
while(fabs(y)>=0.0001);
return(x);
}
void main()
{
float x1,x2,f1,f2,x;
do
{
printf("input x1,x2:\n");
scanf("%f,%f",&x1,&x2);
f1=f(x1);
f2=f(x2);
}
while(f1*f2>=0);
x=root(x1,x2);
printf("A root of equation is%8.4f\n",x);
}