C++中求方程的根怎么写
时间: 2024-10-17 19:03:21 浏览: 18
C++编程题汇总450份
4星 · 用户满意度95%
在C++中,计算一元二次方程的根通常会涉及到公式法,也就是使用韦达定理。这里简单介绍如何编写一个函数来解形如ax^2 + bx + c = 0的二次方程。你可以使用`cmath`库提供的`sqrt()`函数。以下是一个基础的示例:
```cpp
#include <iostream>
#include <cmath>
// 定义一个辅助函数,用于计算判别式
double discriminant(double a, double b, double c) {
return b * b - 4 * a * c;
}
// 解决二次方程 ax^2 + bx + c = 0
std::pair<double, double> solveQuadratic(double a, double b, double c) {
double delta = discriminant(a, b, c);
if (delta > 0) {
// 两个实数根
double root1 = (-b + std::sqrt(delta)) / (2 * a);
double root2 = (-b - std::sqrt(delta)) / (2 * a);
return {root1, root2};
} else if (delta == 0) {
// 单一实数根
double root = -b / (2 * a);
return {root, root};
} else {
// 无实根,有复数根
double realPart = -b / (2 * a);
double imaginaryPart = std::sqrt(-delta) / (2 * a);
return {{realPart, imaginaryPart}, {realPart, -imaginaryPart}};
}
}
int main() {
double a, b, c;
std::cout << "请输入二次方程的系数 a, b, c: ";
std::cin >> a >> b >> c;
auto roots = solveQuadratic(a, b, c);
if (roots.first != roots.second) {
std::cout << "方程的根为: " << roots.first << " 和 " << roots.second << "\n";
} else {
std::cout << "方程有一个根: " << roots.first << "\n";
}
return 0;
}
```
在这个例子中,用户会被提示输入三个系数a、b和c,然后程序会计算并打印出对应的根。注意,这个代码仅适用于标准的一元二次方程,对于其他类型的方程(如三次方程等),需要不同的算法。
阅读全文