用c++写一段代码求出ax²+bx+c=0的根
时间: 2024-12-17 07:34:56 浏览: 4
已知二元一次方程ax²+bx+c=0(a≠0),编程实现求解方程的根。(分三种情况考虑)
在C++中,我们可以使用牛顿迭代法或者数学库函数如`std::sqrt`来解二次方程ax² + bx + c = 0。这里我将展示一个简单的使用公式法的例子,假设我们知道a、b和c的值:
```cpp
#include <iostream>
#include <cmath>
// 函数用来计算二次方程的判别式
double discriminant(double a, double b, double c) {
return b * b - 4 * a * c;
}
// 函数用来找出两个实数根
std::pair<double, double> quadraticRoots(double a, double b, double c) {
if (discriminant(a, b, c) >= 0) { // 如果判别式大于等于0,则有两个实根
double sqrt_val = std::sqrt(discriminant(a, b, c));
double root1 = (-b + sqrt_val) / (2 * a);
double root2 = (-b - sqrt_val) / (2 * a);
return std::make_pair(root1, root2); // 返回一个包含两个根的pair
} else { // 如果判别式小于0,则无实根,返回复数解
double real_part = -b / (2 * a);
double imag_part = std::sqrt(-discriminant(a, b, c)) / (2 * a);
return std::make_pair(real_part, imag_part);
}
}
int main() {
double a, b, c; // 输入系数
std::cout << "请输入二次方程的系数 a, b, c: ";
std::cin >> a >> b >> c;
std::pair<double, double> roots = quadraticRoots(a, b, c);
if (roots.first != roots.second) { // 检查是否有两个不同的根
std::cout << "方程的两个实根分别为: " << roots.first << " 和 " << roots.second << "\n";
} else {
std::cout << "方程有相同的实根: " << roots.first << "\n";
}
return 0;
}
```
阅读全文