锦绣谷的时空扭曲:C语言方程求解(高分悬赏)

来源:百度文库 编辑:高校问答 时间:2024/04/27 17:33:11
#include <stdio.h>
#include <math.h>
float f(float x)
{
return(x*x*x-5*x*x+16*x-80);
}
float x_point(float x1,float x2)
{
return((f(x2)*x1-f(x1)*x2)/(f(x2)-f(x1)));
}
float root(float x1,float x2)
{
float x0,f1,f0;
f1=f(x1);
do
{
x0=x_point(x1,x2);
f0=f(x0);
if(f1*f0>0)
{f1=f0;x1=x0;}
else
x2=x0;
}while(fabs(f0)>0.0001);
return(x0);
}
void main()
{
float x1,x2;
printf("Input x1&x2:");
scanf("%f%f",&x1,&x2);
printf("The root of the eduation is %f\n",root(x1,x2));
}

为什么一运行,输入数据后,就显示:float point error:overflow
我想了好久,也不知道哪个地方错了。。麻烦各位说说。

void main()下面那行错误
提示信息为main must return int
去掉void看是不是你要的结果,我把你上面的复制到Dev-C++上编译运行的,就出现上面的错误

while(fabs(f0)<0.0001);//改为小于

是越界了 吧,你把float 换成 double型试一下

把float改成double,把输入的%f改为%lf试下,肯定是数据类型错了嘛