墨白Coding 2022-08-18 22:25 采纳率: 50%
浏览 27

C语言PTA问题求解

问题遇到的现象和发生背景

为什么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;
运行结果及报错内容

img

img

  • 写回答

2条回答 默认 最新

  • 烟雨龙升 2022-08-18 22:59
    关注
    
       if(cal(low,a3,a2,a1,a0)*cal(mid,a3,a2,a1,a0)>0){    // 不是这个条件都去执行else, 然后你交换了low和high, 对于high  = mid 的条件你直接减少了
            low = mid;
        }else{
            high = mid;
        }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 8月18日