# 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;
}
}
}
}