计算一元二次方程

计算一元二次方程

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

分析:

本题中的方程的计算方法已经给出,重点是如何对表达式进行计算(注意求值优先级,使用小括号保证优先级顺序)以及不同方程的解的情况,在这里使用了sqrt函数用于计算平方根。

题解:

#include <bits/stdc++.h>
using namespace std;

int main() {
    double a, b, c;
    //循环读入a b c
    while(scanf("%lf %lf %lf", &a, &b, &c) != EOF) {
        //计算delta
        double delta = b*b - 4*a*c;

        //判断a为零的情况
        if(a == 0.0) {
            printf("Not quadratic equation\n");
            continue;
        }

        //delta小于0,则有两个虚数根
        if(delta < 0.0) {
            double x1 = -b / (2. * a);
            double x2 = sqrt(-delta) / (2. * a);
            printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi\n", x1, x2, x1, x2);
        }
        else if(delta == 0.0) { //delta等于0有重根
            double x1 = (-b) / (2. * a);
            printf("x1=x2=%.2lf\n", x1, x1);
        } else { //否则有两个实数根
            double x1 = (-b - sqrt(delta)) / (2. * a);
            double x2 = (-b + sqrt(delta)) / (2. * a);
            printf("x1=%.2lf;x2=%.2lf\n", x1, x2);
        }
    }
    return 0;
}

总结:

经典的一元二次方程解法,if else的嵌套使用以及sqrt函数的使用。

全部评论
为什么官方的答案都跑不对?
1 回复 分享
发布于 2022-06-27 20:58
-0的问题需要特殊说明,+-也是。
点赞 回复 分享
发布于 2022-04-17 15:44

相关推荐

10-20 11:11
辽宁大学 营销
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

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