求方程ax2+bx+c=0的根,分别用三个函数分别求档b2-4ac大于0、等于0、小于0时的根。(使用全局变量)。在函数中注释说明定义本函数时的四要素:函数功能、函数名、函数返回值类型、函数参数列表。
时间: 2024-02-12 18:08:43 浏览: 52
函数功能:求解二次方程的根
函数名:solve_quadratic_equation
函数返回值类型:void
函数参数列表:double a, double b, double c, double& x1, double& x2
以下是实现代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
double delta; // 全局变量,保存 b^2-4ac 的值
// 求解 b^2-4ac 的值,返回值为 delta
double calculate_delta(double a, double b, double c) {
return b * b - 4 * a * c;
}
// 当 b^2-4ac 大于 0 时,求解二次方程的根
void solve_when_delta_gt_0(double a, double b, double c, double& x1, double& x2) {
delta = calculate_delta(a, b, c);
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
}
// 当 b^2-4ac 等于 0 时,求解二次方程的根
void solve_when_delta_eq_0(double a, double b, double c, double& x1, double& x2) {
delta = calculate_delta(a, b, c);
x1 = -b / (2 * a);
x2 = x1;
}
// 当 b^2-4ac 小于 0 时,求解二次方程的根
void solve_when_delta_lt_0(double a, double b, double c, double& x1, double& x2) {
delta = calculate_delta(a, b, c);
double real_part = -b / (2 * a);
double imaginary_part = sqrt(-delta) / (2 * a);
x1 = real_part + imaginary_part;
x2 = real_part - imaginary_part;
}
int main() {
double a, b, c;
double x1, x2;
cout << "请输入二次方程的系数 a, b, c:" << endl;
cin >> a >> b >> c;
if (b * b - 4 * a * c > 0) {
solve_when_delta_gt_0(a, b, c, x1, x2);
cout << "二次方程的根为:" << x1 << " 和 " << x2 << endl;
} else if (b * b - 4 * a * c == 0) {
solve_when_delta_eq_0(a, b, c, x1, x2);
cout << "二次方程的根为:" << x1 << endl;
} else {
solve_when_delta_lt_0(a, b, c, x1, x2);
cout << "二次方程的根为:" << x1 << " + " << x2 << "i 和 " << x1 << " - " << x2 << "i" << endl;
}
return 0;
}
```
在该程序中,全局变量 delta 保存了 b^2-4ac 的值,三个函数分别用于求解 b^2-4ac 大于 0、等于 0、小于 0 时的根,函数名分别为 solve_when_delta_gt_0、solve_when_delta_eq_0、solve_when_delta_lt_0,它们的返回值类型均为 void,参数列表为 double a, double b, double c, double& x1, double& x2,其中 x1 和 x2 是通过引用传递的,在函数中被修改后可以直接影响到 main 函数中的变量。
阅读全文
相关推荐














