一、题目链接
http://noi.openjudge.cn/ch0104/20/
二、解题思路
◎ 给定的一元二次方程的根存在三种可能性:
→ 如果Δ等于0,说明有两个相同的实根;
否则如果Δ大于0,说明有两个不同的实根;
否则,说明有两个虚根;
上述三种可能性是互斥的。
三、实施步骤
◎ 首先,定义并输入三个double类型的浮点数a、b、c,分别代表二次项、一次项、常数项的系数;
◎ 其次,定义double类型的浮点数delta,代表韦达求根公式中的Δ,令delta=b*b-4*a*c;
◎ 最后:
→ 如果delta==0:输出两个相同的实根;
否则如果delta>0:输出两个不同的实根;
否则:输出两个虚根;
根据韦达求根公式,可以根据以上情况分别计算出对应的根,并按照题目格式要求输出。
四、C++程序
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a;
double b;
double c;
cin >> a;
cin >> b;
cin >> c;
double delta = b * b - 4 * a * c;
if (delta == 0)
{
printf("x1=x2=%.5f", -b / (2 * a));
}
else if (delta > 0)
{
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
printf("x1=%.5f;x2=%.5f", x1, x2);
}
else
{
double x1 = (0 - b) / (2 * a);
double x2 = sqrt(-delta) / (2 * a);
printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi", x1, x2, x1, x2);
}
return 0;
}