为什么low和high换个位置就错误?
while(high-low>0){
if(high-low<0.001){
printf("%.2lf",(high+low)/2);
break;
}
if(cal(low,a3,a2,a1,a0)*cal(high,a3,a2,a1,a0)<0){
mid = (high+low)/2;
}
if(cal(mid,a3,a2,a1,a0)==0){
printf("%.2lf",mid);
break;
}
if(cal(low,a3,a2,a1,a0)*cal(mid,a3,a2,a1,a0)>0){
low = mid;
}else{
high = mid;
}
}
return 0;
if(cal(low,a3,a2,a1,a0)*cal(mid,a3,a2,a1,a0)>0){ // 不是这个条件都去执行else, 然后你交换了low和high, 对于high = mid 的条件你直接减少了
low = mid;
}else{
high = mid;
}
你可以参考下这篇文章:PTA 黑洞数 C语言