C语言实验——一元二次方程Ⅱ

jlqwer 发表于 代码 分类,标签:

 

题目描述

求一元二次方程ax2+bx+c=0的解。a,b,c为任意实数。

输入

输入数据有一行,包括a b c的值。

输出

按以下格式输出方程的根x1和x2。x1和x2之间有一个空格。 x1 x2 (1)如果x1和x2为实根,则以x1>=x2输出。 (2)如果方程是共轭复根,x1=m+ni,x2=m-ni,其中n>0。 其中x1, x2, m,n均保留2位小数。

样例输入

1 2 3

样例输出

-1.00+1.41i -1.00-1.41i

代码如下:

#include<stdio.h>

#include<math.h>

int main()

{

    double a,b,c,d,x1,x2,z,m,n;

    scanf("%lf%lf%lf",&a,&b,&c);

    d=(b*b-4*a*c);

    if (d>=0)

    {

        x1=(-b+sqrt(d))/(2*a);

        x2=(-b-sqrt(d))/(2*a);

        if(x1>=x2)

            printf("%.2lf %.2lf",x1,x2);

        else

            printf("%.2lf %.2lf",x2,x1);

    }

    else

        {

    m=(-b)/(2*a);

    n=sqrt(-d)/(2*a);

    printf("%.2lf+%.2lfi %.2lf-%.2lfi",m,n,m,n);

    }

        return 0;

}