求一元二次方程 题解

2024-01-01 23:03:51

求一元二次方程

题目描述

利用公式 :

x 1 = ? b + b 2 ? 4 a c 2 a , x 2 = ? b ? b 2 ? 4 a c 2 a x_1=\frac{-b+\sqrt{b^2-4ac}}{2a} , x_2=\frac{-b-\sqrt{b^2-4ac}}{2a} x1?=2a?b+b2?4ac ??,x2?=2a?b?b2?4ac ??

求一元二次方程 a x 2 + b x + c = 0 ax^2+bx+c=0 ax2+bx+c=0 的根,其中 a a a 不等于 0 0 0。结果要求精确到小数点后 5 5 5 位。

输入格式

输入一行,包含三个浮点数 a , b , c a,b,c a,b,c(它们之间以一个空格分开),分别表示方程 a x 2 + b x + c = 0 ax^2+bx+c=0 ax2+bx+c=0 的系数。

输出格式

输出一行,表示方程的解。

若两个实根相等,则输出形式为:x1=x2=aaaa

若两个实根不等,在满足根小者在前的原则,则输出形式为:x1=aaaa;x2=bbbb

若无实根输出 No answer!

所有输出部分要求精确到小数点后 5 5 5 位,数字、符号之间没有空格。

样例 #1

样例输入 #1

-15.97 19.69 12.02

样例输出 #1

x1=-0.44781;x2=1.68075
#include <iostream>
#include <stdio.h>
#include <math.h>

using namespace std;
double a,b,c;

int main() {
    cin>>a>>b>>c;
    double delta=b*b-4*a*c;
    if (delta>0) {
        double x1=(-b+sqrt(delta))/(2*a);
        double x2=(-b-sqrt(delta))/(2*a);
        if (x1>x2) {
            swap(x1,x2);
        }
        printf("x1=%.5lf;x2=%.5lf",x1,x2);
    } else if (delta==0) {//delta为零其根也为零,所以x1=x2
        double x1=(-b+sqrt(delta))/(2*a);
        double x2=(-b-sqrt(delta))/(2*a);
        printf("x1=x2=%.5lf",x1);
    } else {
        cout<<"No answer!";//delta小于零
    }
    return 0;
}

文章来源:https://blog.csdn.net/yaosichengalpha/article/details/135328813
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。