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段——变量、表达式、分支、循环

全部评论

相关推荐

04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务