C语言:求解一元二次方程

#include <stdio.h>
#include <math.h>
void fc(float a,float b,float c);
void fca(float a,float b,float c);
main()
{
    float a,b,c;
    scanf("%f%f%f",&a,&b,&c);
    fca(a,b,c);
}
void fc(float a,float b,float c)
{
    float x1,x2,pb;
    if(a==0)
    {
        if(b==0)
        {
            if(c==0)printf("任意解。");
            else printf("无解。"); 
        }
        else
        {
            if(c!=0)
            {
                x1=-c/b;
                printf("x=%.2f",x1);
            }
            else printf("x=0");
        }
    }
    else
    {
        pb=b*b-4*a*c;
        if(pb<0)
        printf("无解。");
        else
        {
            if(pb==0)
            {
                x1=x2=(-b+sqrt(pb))/2/a;
                printf("x1=x2=%f",x1,x2);
            }
            else
            {
                x1=(-b+sqrt(pb))/2/a;
                x2=(-b-sqrt(pb))/2/a;
                printf("x1=%.2f,x2=%.2f",x1,x2);
            }
        }
    }
}
void fca(float a,float b,float c)
{
    float x1,x2,pb,x;
    pb=b*b-4*a*c;
    if(a==0 && b==0 && c==0) printf("任意解");
    else if(a==0 && b==0 &&c!=0) printf("无解") ;
    else if(a==0 && b!=0) x=-c/b,printf("x=%f",x);
    else if(a!=0 && pb>0) x1=(-b+sqrt(pb))/2/a,    x2=(-b-sqrt(pb))/2/a,printf("x1=%.2f,x2=%.2f",x1,x2);
    else if(a!=0 && pb==0) x1=x2=(-b+sqrt(pb))/2/a,    printf("x1=x2=%f",x1,x2);
    else printf("无解");
    
}

 

posted @ 2022-03-09 09:05  myrj  阅读(545)  评论(0编辑  收藏  举报