求实验方程ax²+bx+c=0的根,用三个函数分别求:当b²-4ac大于0,等于0和小于0时的根并输出结果。从主函数输入a,b,c的值。
时间: 2025-01-02 10:48:08 浏览: 5
要解决二次方程 \( ax^2 + bx + c = 0 \) 的根,我们可以使用三个不同的情况判断:
1. **当判别式 \( b^2 - 4ac > 0 \)** (即方程有两个不相等的实数根):
这时我们应用公式:\( x_1 = \frac{-b + \sqrt{b^2 - 4ac}}{2a} \),\( x_2 = \frac{-b - \sqrt{b^2 - 4ac}}{2a} \)
2. **当判别式 \( b^2 - 4ac = 0 \)** (即方程有一个重根或两个相同的实数根):
只需要计算一次:\( x = \frac{-b}{2a} \)
3. **当判别式 \( b^2 - 4ac < 0 \)** (即方程无实数根,有复数根,对于一般用户来说不需要输出):
实际上在这种情况下,我们无法给出实数解,可以简单地说明方程没有实数根。
以下是简单的伪代码示例,用于描述这个过程:
```cpp
#include <iostream>
#include <cmath>
// 函数定义
double quadraticRoots(double a, double b, double c, bool twoRealSolutions) {
double discriminant = b * b - 4 * a * c;
if (twoRealSolutions && discriminant > 0) {
return (double)(- std::sqrt(discriminant)) / (2 * a);
} else if (discriminant == 0) {
return -b / (2 * a);
} else {
// 对于复数根,此处不做处理,只输出提示信息
std::cout << "方程无实数根." << std::endl;
return 0; // 返回0表示不提供实际解
}
}
int main() {
double a, b, c;
std::cout << "请输入系数a, b, c: ";
std::cin >> a >> b >> c;
bool twoRealSolutions = true; // 默认假设会有两个实数根
std::pair<double, double> roots = quadraticRoots(a, b, c, twoRealSolutions);
if (twoRealSolutions) {
std::cout << "根为:" << roots.first << ", " << roots.second << std::endl;
}
return 0;
}
```
**
阅读全文