编写函数,求一元二次方程的两个实根,用C++实现
时间: 2024-03-05 10:51:20 浏览: 99
以下是用 C++ 实现求解一元二次方程的两个实根的函数:
```cpp
#include <cmath>
// 求解一元二次方程的两个实根
// 输入:a, b, c 分别为二次项系数、一次项系数和常数项系数
// 输出:如果有实数根,返回 true 和两个实根 x1 和 x2,否则返回 false
bool solveQuadraticEquation(double a, double b, double c, double& x1, double& x2)
{
double delta = b * b - 4 * a * c;
if (delta < 0) {
// 方程无实数根
return false;
} else if (delta == 0) {
// 方程有唯一的一个实根
x1 = x2 = -b / (2 * a);
return true;
} else {
// 方程有两个实根
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
return true;
}
}
```
这个函数的输入是一元二次方程 $ax^2+bx+c=0$ 的三个系数,输出是一个 bool 类型的值和两个引用类型的变量 x1 和 x2,表示方程的两个实数根(如果有的话)。如果方程无实数根,则返回 false,并且 x1 和 x2 的值没有意义。
你可以这样调用这个函数:
```cpp
#include <iostream>
int main()
{
double a = 1, b = -4, c = 3;
double x1, x2;
if (solveQuadraticEquation(a, b, c, x1, x2)) {
std::cout << "x1 = " << x1 << std::endl; // 输出 x1 = 3
std::cout << "x2 = " << x2 << std::endl; // 输出 x2 = 1
} else {
std::cout << "方程无实数根" << std::endl;
}
return 0;
}
```
注意,在 C++ 中,函数的返回值可以是一个 bool 类型的值,表示函数执行成功或失败。同时,为了输出函数的多个返回值,可以使用引用类型的变量。
阅读全文