求方程ax2+bx+c=0的根,用三个子函数分别求当:b2-4ac大于0、等于0和小于0时的根并输出结果,从主函数输入a,b,,c的值。【提示:可将根及判别式等使用全局变量】
时间: 2023-11-27 08:49:55 浏览: 140
已知二元一次方程ax²+bx+c=0(a≠0),编程实现求解方程的根。(分三种情况考虑)
下面是实现该功能的代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
double a, b, c; // 全局变量,用于存储方程的系数和根
// 计算方程的根
void calc_root(double delta) {
if (delta > 0) {
double x1, x2;
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
cout << "方程有两个不等实数根:x1 = " << x1 << ", x2 = " << x2 << endl;
} else if (delta == 0) {
double x;
x = -b / (2 * a);
cout << "方程有一个实数重根:x = " << x << endl;
} else {
double real_part, imag_part;
real_part = -b / (2 * a);
imag_part = sqrt(-delta) / (2 * a);
cout << "方程有两个共轭复数根:x1 = " << real_part << "+" << imag_part << "i, x2 = " << real_part << "-" << imag_part << "i" << endl;
}
}
// 当b²-4ac大于0时的根
void root_when_delta_gt_0() {
double delta = b * b - 4 * a * c;
calc_root(delta);
}
// 当b²-4ac等于0时的根
void root_when_delta_eq_0() {
double delta = b * b - 4 * a * c;
calc_root(delta);
}
// 当b²-4ac小于0时的根
void root_when_delta_lt_0() {
double delta = b * b - 4 * a * c;
calc_root(delta);
}
int main() {
cout << "请输入方程的系数a、b、c:";
cin >> a >> b >> c;
if (b * b - 4 * a * c > 0) {
root_when_delta_gt_0();
} else if (b * b - 4 * a * c == 0) {
root_when_delta_eq_0();
} else {
root_when_delta_lt_0();
}
return 0;
}
```
以上代码中,`calc_root` 函数用于计算方程的根,根据给定的判别式 `delta` 的值,分别输出实数根和复数根。`root_when_delta_gt_0`、`root_when_delta_eq_0` 和 `root_when_delta_lt_0` 函数分别对应判别式大于0、等于0和小于0的情况,它们都调用了 `calc_root` 函数来计算根。在主函数中,先读入三个系数,然后根据判别式的符号选择调用哪个函数来计算根。
阅读全文