解一元二次方程

#include<stdio.h>
#include<math.h>
int main()
{
    float a,b,c;//一元二次方程三系数
    if(scanf("%f %f %f",&a,&b,&c)!=3)
    {
        printf("input error!");
        return 0;
        }
    if(a==0&&b==0)//a,b都为0和abc都为零
    {
        if(c==0)
        printf("Zero Equation");
        else
        printf("Not An Equation");
        return 0;
    }
    if(a==0)//当a=0且b!=0,一元一次方程
    {
        printf("%0.2f",-c/b);
        return 0;
    }
    float Delta=b*b-4*a*c;//定义Delta
    if(Delta<0)//三种情况之1:两虚根
    {
if(b==0)//b为0时无实部
    printf("0.00+%0.2fi\n0.00-%0.2fi",sqrt(-Delta)/(2*a),sqrt(-Delta)/(2*a));
    else
    printf("%0.2f+%0.2fi\n%0.2f-%0.2fi",(-b) / (2 * a),sqrt(-Delta) / (2 * a),(-b) / (2 * a),sqrt(-Delta) / (2 * a));
}
else if(Delta==0)//三种情况之2:两相同实根
    printf("%0.2f",-b/(2*a));
    else//三种情况之3:两不同实根
    printf("%0.2f\n%0.2f",(-b+sqrt(b*b-4*a*c))/(2*a),(-b-sqrt(b*b-4*a*c))/(2*a));
    return 0 ;
}

发布者

头像

Bearli

现在是过去最好的结果。

发表评论

电子邮件地址不会被公开。 必填项已用*标注