题解 | #一元二次方程#

计算一元二次方程

http://www.nowcoder.com/practice/7da524bb452441b2af7e64545c38dc26

#include<stdio.h>
#include<math.h>
int main()
{
    double a = 0.0;
    double b = 0.0;
    double c = 0.0;
    while (scanf("%lf %lf %lf", &a, &b, &c) != EOF)
    {
        if (a == 0)
        {
            printf("Not quadratic equation\n");
        }
        else
        {
            double deta = b * b - 4 * a * c;
            if (deta == 0)
            {
                if (a < 0)
                {
                    printf("x1=x2=%.2lf\n", (-b - sqrt(deta)) / (2 * a));//因为测试用例4 0 0会输出-0.00 所以加一个判断条件
                }
                else
                {
                    printf("x1=x2=%.2lf\n", (-b + sqrt(deta)) / (2 * a));
                }
            }
            else if (deta > 0)
            {
                printf("x1=%.2lf;x2=%.2lf\n", ((-b - sqrt(deta)) / (2 * a)), ((-b + sqrt(deta)) / (2 * a)));
            }
            else
            {
                double real = -b / (2 * a);
                double image = sqrt(-deta) / (2 * a);
                if (image < 0)//测试用例的 -1 5 -10 会出现 --  +- 所以加判断条件  把-号消掉
                {
                    image = (-image);
                }
                printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi\n", real, image, real, image);
            }
        }
    }
    return 0;
}

全部评论
写的很对,就这两个地方,真是道坑题
点赞 回复 分享
发布于 2022-04-19 22:25

相关推荐

点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务