# ZJYYC1102. 求方程的解

# ZJYYC1102. 求方程的解

题目描述
求ax^2 +bx+c=0方程的实根。

主要和数学公式bb-4ac有关
首先等于0
方程有且只要一个解
小于0则没有解
大于0则有2个解(如果a和b和c都为0,那么方程有无数个实数解,如果c不等于0那么方程没有实数解)
输入描述
在一行中输入三个数,分别表示a、b、c。

输出描述
如果方程无实数解,输出“No”;如果方程有实数解,在第一行输出“Yes”,在第二行输出方程的根,若方程有两个根,则先输出大的,再输出小的,有解的情况,所有的解均保留2位小数;如果方程有无数个实数解,输出“Infinity”

以下是代码:

#include <iostream>
#include <cmath>
#include <iomanip>//规范输出格式小数点后几位的头文件
using namespace std;

int main() {
    double a, b, c;
    cin >> a >> b >> c;

    if (a == 0 && b == 0) {
        if (c != 0) {
            cout << "No" << endl;
        }
        else {
            cout << "Infinity" << endl;
        }
    }
    else if (a == 0) {
        cout << "Yes" << endl;
        cout << fixed << setprecision(2) << -c / b << endl;
    }
    else {
        double delta = b * b - 4 * a * c;
        if (delta < 0) {
            cout << "No" << endl;
        }
        else if (delta == 0) {
            cout << "Yes" << endl;
            cout << fixed << setprecision(2) << -b / (2 * a) << endl;
        }求geng
        else {
            double root1 = (-b + sqrt(delta)) / (2 * a);//求根公式
            double root2 = (-b - sqrt(delta)) / (2 * a);
            cout << "Yes" << endl;
            if (root1 > root2) {
                cout << fixed << setprecision(2) << root1 << " " << root2 << endl;
            }
            else {
                cout << fixed << setprecision(2) << root2 << " " << root1 << endl;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值