#include <iostream>
#include <cmath> // 用于计算平方根
// 判断一元二次方程是否有实数解的函数
bool hasRealSolutions(float a, float b, float c) {
float discriminant = b * b - 4 * a * c;
return discriminant >= 0;
}
// 求一元二次方程的解的函数
void solveQuadraticEquation(float a, float b, float c, float &root1, float &root2) {
float discriminant = b * b - 4 * a * c;
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
}
int main() {
float a, b, c;
float root1, root2;
std::cout << "请输入一元二次方程的三个系数 a, b, c: ";
std::cin >> a >> b >> c;
if (hasRealSolutions(a, b, c)) {
solveQuadraticEquation(a, b, c, root1, root2);
std::cout << "方程有实数解:" << std::endl;
std::cout << "x1 = " << root1 << std::endl;
std::cout << "x2 = " << root2 << std::endl;
} else {
std::cout << "方程没有实数解。" << std::endl;
}
return 0;
}
代码说明:
-
hasRealSolutions
函数:- 参数
a
,b
,c
是一元二次方程的三个系数。 - 返回值为布尔值,表示该方程是否有实数解。根据判别式
b * b - 4 * a * c
是否大于等于0来判断。
- 参数
-
solveQuadraticEquation
函数:- 参数
a
,b
,c
是一元二次方程的三个系数。 - 参数
root1
和root2
是引用参数,用于存储方程的两个实数解。 - 计算判别式
discriminant
,然后使用海伦公式计算两个实数解。
- 参数
-
main
函数:- 定义三个浮点型变量
a
,b
,c
来存储一元二次方程的三个系数。 - 通过
std::cin
从键盘读取三个系数。 - 调用
hasRealSolutions
函数判断方程是否有实数解。 - 如果有实数解,调用
solveQuadraticEquation
函数计算方程的两个实数解,并输出结果。 - 如果没有实数解,输出相应的提示信息。
- 定义三个浮点型变量