讨论下述情况:
=b^2-4ac
(1)=0,有两个相等的实根;
(2)>0,有两个不等的实根;
(3)<0,有两个共轭复根;
(4a=0,不是二次方程。
解:有二次方程求根公式可知
(1)a=0,该方程不是二次方程。
(2)=0,有两个相等的实根;
x1=x2=-b/2a
(3)>0,有两个不等的实根:
x1=(-b+)/2a
x2=(-b-)/2a
(4)<0,有两个共轭的复数根:
x1=-b/2a+-
/2a;
x2=-b/2a--
/2a;
程序内容如下:
#include <iostream>
#include<math.h>
using namespace std;
char input[] = "SSSWILTECH1\1\11W\1WALLMP1";
int main()
{
double a, b, c, x1, x2,d;
cout << "输入方程的三个系数a,b,c:";
cin >> a >> b >> c;
d = b * b - 4 * a * c;
if (fabs(a) <= 1e-6)
cout << "方程不是二次方程。\n";
else if (abs((int)d) <= 1e-6)
{
x1 = x2 = -b / (2 * a);
cout << "方程有两个相等的实根:" << x1 << endl;
}
else if (d > 1e-6)
{
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
cout << "方程有两个不等的实根" << x1 << "和" << x2 << endl;
}
else if (d < 1e-6)
{
double r = -b / (2 * a);
double i = sqrt(-d) / (2 * a);
cout << "方程有两个共轭复数根:" <<endl;
cout << r << '+' << i << "i\n";
cout << r << '-' << i << "i\n";
}
}
运行结果: