用c++求一元二次方程的根
时间: 2024-09-14 18:05:07 浏览: 42
在C++中求解一元二次方程的根通常涉及使用求根公式。一元二次方程的一般形式是 `ax^2 + bx + c = 0`,其中 `a`、`b` 和 `c` 是已知的系数,且 `a ≠ 0`。该方程的求根公式为:
```
x = (-b ± sqrt(b^2 - 4ac)) / (2a)
```
根据判别式 `Δ = b^2 - 4ac` 的值,可以判断方程的根的情况:
- 如果 `Δ > 0`,方程有两个不相等的实根;
- 如果 `Δ = 0`,方程有两个相等的实根(重根);
- 如果 `Δ < 0`,方程没有实根,而是有两个共轭复根。
下面是一个简单的C++程序,用于求解一元二次方程的根:
```cpp
#include <iostream>
#include <cmath> // 引入cmath库以使用sqrt()函数
using namespace std;
int main() {
double a, b, c, delta, root1, root2, realPart, imagPart;
cout << "请输入一元二次方程的系数a, b和c: ";
cin >> a >> b >> c;
delta = b * b - 4 * a * c; // 计算判别式
// 根据判别式的值求解
if (delta > 0) {
// 两个不同的实根
root1 = (-b + sqrt(delta)) / (2 * a);
root2 = (-b - sqrt(delta)) / (2 * a);
cout << "方程有两个不同的实根: " << root1 << " 和 " << root2 << endl;
} else if (delta == 0) {
// 两个相同的实根
root1 = root2 = -b / (2 * a);
cout << "方程有两个相同的实根: " << root1 << endl;
} else {
// 两个复根
realPart = -b / (2 * a);
imagPart = sqrt(-delta) / (2 * a);
cout << "方程有两个复根: " << realPart << "+" << imagPart << "i 和 " << realPart << "-" << imagPart << "i" << endl;
}
return 0;
}
```
在上述代码中,我们首先从用户那里获取一元二次方程的系数 `a`、`b` 和 `c`,然后计算判别式 `delta`。根据 `delta` 的值,我们可以判断出方程的根的情况,并计算出实根或复根。
阅读全文