#include<stdio.h>
double a0,a1,a2,a3;
double f(double x){
return a3*x*x*x+a2*x*x+a1*x+a0;
}
int main()
{
double min,max,mid=100.0,FZ=0.001;
scanf("%lf %lf %lf %lf",&a3,&a2,&a1,&a0);
scanf("%lf %lf",&min,&max);
do{
mid=0.5*(min+max);
if(f(mid)==0) break;
if(f(mid)*f(min)>0) min=mid;
if(f(mid)*f(max)>0) max=mid;
}while(max-min>FZ);
printf("%.2f",mid);
return 0;
}
总结
子函数f中需要用到的a0~a3,设为全局变量。