#include
#include
double f1(double x)
{
return 2.0*x*x*x-4*x*x+3*x-6;
}
int main()
{
double lit= 1E-07; // 直接给常数
double min=-10,max=10;
double mid=(max+min)/2;
double result;
// printf("left=%lf right=%lf\n",f1(min),f1(max)); // 要 判断一下: 一负,一正
do
{
if (fabs( f1(mid) ) <= lit) break;
if( f1(mid) >= 0) { max=mid; } else { min=mid;}
mid=(max+min)/2; // 你的主要错在这句,你写 mid=(max+mid)/2;
}while(1);
printf("result:x= %lf\n",mid);
return 0;
}