7-29 二分法求多项式单根(程序有错误)

图片说明

#include<stdio.h>
double a3,a2,a1,a0;//跨函数的变量弄成全局变量


double f(double x){
    return a3*x*x*x+a2*x*x+a1*x+a0;
}

int main(){
    double a,b,mid;        //mid代表是根
    scanf("%lf %lf %lf %lf",&a3,&a2,&a1,&a0);
    scanf("%lf %lf",&a,&b);
    while(f(a)*f(b)<=0){
        if(f(a)==0){
            mid=a;
            break;
        }
        if(f(b)==0){
            mid=b;
            break;
        }
        mid=(a+b)/2;
        if(f(mid)==0){
            break;
        }else{
            if(f(mid)*f(a)>=0){
                a=mid;
            }else{
                b=mid;
            }
        } 
    }
    printf("%.2f",mid);
    return 0;
}

图片说明


#include<stdio.h>

double a3,a2,a1,a0;                      //跨函数的变量弄成全局变量

double f(double x){
    return a3*x*x*x+a2*x*x+a1*x+a0;
}

int main()
{
    double a,b,mid;
    scanf("%lf %lf %lf %lf",&a3,&a2,&a1,&a0);
    scanf("%lf %lf",&a,&b);

    while( b-a>=1e-4 && f(a)*f(b)<=0 )   //1e-4是10的(-4)次方,小于这个数是因为想到某个时间结束,而不是无限进行下去,不加会TLE
    {
        if(  f(a)==0  )
        {
            mid=a;//mid代表是根
            break;
        }
        if(  f(b)==0  )
        {
            mid=b;
            break;
        }
        mid = (a+b)/2;
        if(  f(mid)==0  )
        {
            break;
        }
        else
        {
            if(f(mid)*f(a)>=0)
            {
                a=mid;
            }
            else
            {
                b=mid;
            }
        } 
    }

    printf("%.2f",mid);
    return 0;
}

中国大学MOOC 2021年春季C、Java入门练习第I段——变量、表达式、分支、循环

全部评论

相关推荐

02-17 20:43
西北大学 Java
在做测评的猫头鹰很紧张:他问你,你问deep seek
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务