c++一元二次方程求根
时间: 2024-09-06 18:01:29 浏览: 67
在 C++ 中,一元二次方程通常采用公式法或分解因式法来求解,其中最常见的是使用公式法,也称为韦达定理(Vieta's formulas)。对于一般形式的一元二次方程 ax^2 + bx + c = 0,其根可以通过以下公式计算:
设 x1 和 x2 是两个解,则有:
x1 + x2 = -b / a (判别式的根与系数的关系)
x1 * x2 = c / a
如果判别式 D = b^2 - 4ac >= 0,方程有两个实数解;若 D < 0,方程无实数解,但有复数解。
在 C++ 中,可以编写如下的函数来求解:
```cpp
#include <iostream>
#include <cmath>
// 定义求解一元二次方程的函数
void solveQuadratic(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) { // 两个实数根
double root1 = (-b + sqrt(discriminant)) / (2 * a);
double root2 = (-b - sqrt(discriminant)) / (2 * a);
std::cout << "两个实数根:root1 = " << root1 << ", root2 = " << root2 << std::endl;
} else if (discriminant == 0) { // 只有一个实数根
double root = -b / (2 * a);
std::cout << "唯一实数根:root = " << root << stdn;
} else { // 两个复数根
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
std::cout << "两个复数根:(根1)" << realPart << " + " << imaginaryPart << "i, (根2)" << realPart << " - " << imaginaryPart << "i" << std::endl;
}
}
int main() {
double a, b, c;
std::cout << "请输入一元二次方程的系数a, b, c:";
std::cin >> a >> b >> c;
solveQuadratic(a, b, c);
return 0;
}
```
阅读全文