原文: https://www.programiz.com/cpp-programming/examples/quadratic-roots

该程序从用户那里接受二次方程式的系数,并显示根(实数根和复数根都取决于判别式)。

要理解此示例,您应该了解以下 C++ 编程主题:


对于二次方程ax ^ 2 + bx + c = 0(其中abc为系数),其根由以下公式给出。

C   程序:查找二次方程式的所有根 - 图1

术语b^2-4ac被称为二次方程的判别式。 判别式说明了根的性质。

  • 如果判别式大于 0,则根是实数且不同。
  • 如果判别式等于 0,则根是实数且相等。
  • 如果判别式小于 0,则根是虚数且不同。

C   程序:查找二次方程式的所有根 - 图2


示例:二次方程的根

  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. int main() {
  5. float a, b, c, x1, x2, discriminant, realPart, imaginaryPart;
  6. cout << "Enter coefficients a, b and c: ";
  7. cin >> a >> b >> c;
  8. discriminant = b*b - 4*a*c;
  9. if (discriminant > 0) {
  10. x1 = (-b + sqrt(discriminant)) / (2*a);
  11. x2 = (-b - sqrt(discriminant)) / (2*a);
  12. cout << "Roots are real and different." << endl;
  13. cout << "x1 = " << x1 << endl;
  14. cout << "x2 = " << x2 << endl;
  15. }
  16. else if (discriminant == 0) {
  17. cout << "Roots are real and same." << endl;
  18. x1 = (-b + sqrt(discriminant)) / (2*a);
  19. cout << "x1 = x2 =" << x1 << endl;
  20. }
  21. else {
  22. realPart = -b/(2*a);
  23. imaginaryPart =sqrt(-discriminant)/(2*a);
  24. cout << "Roots are complex and different." << endl;
  25. cout << "x1 = " << realPart << "+" << imaginaryPart << "i" << endl;
  26. cout << "x2 = " << realPart << "-" << imaginaryPart << "i" << endl;
  27. }
  28. return 0;
  29. }

输出

  1. Enter coefficients a, b and c: 4
  2. 5
  3. 1
  4. Roots are real and different.
  5. x1 = -0.25
  6. x2 = -1

在此程序中,sqrt()库函数用于查找数字的平方根。