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

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

时间: 1ms        内存:64M

描述:

求一元二次方程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

提示:

参考答案(内存最优[760]):

#include<stdio.h>
#include<math.h>
int main()
{
    float x1,x2,a,b,c,d;
    scanf("%f%f%f",&a,&b,&c);
    if(b*b-4*a*c>=0)
    {
        d=sqrt(b*b-4*a*c);
	x1=(-b+d)/(2*a);
	x2=(-b-d)/(2*a);
	printf("%.2f %.2f",x1,x2);
    }
    else
    {
        d=sqrt(4*a*c-b*b);
	printf("%.2f+%.2fi %.2f-%.2fi",-b/(2*a),d/(2*a),-b/(2*a),d/(2*a));
    }
    return 0;
}

参考答案(时间最优[0]):

#include<stdio.h>
#include<math.h>
int main()
{
    float x1,x2,a,b,c,d;
    scanf("%f%f%f",&a,&b,&c);
    if(b*b-4*a*c>=0)
    {
        d=sqrt(b*b-4*a*c);
	x1=(-b+d)/(2*a);
	x2=(-b-d)/(2*a);
	printf("%.2f %.2f",x1,x2);
    }
    else
    {
        d=sqrt(4*a*c-b*b);
	printf("%.2f+%.2fi %.2f-%.2fi",-b/(2*a),d/(2*a),-b/(2*a),d/(2*a));
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

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