输入三个浮点数,求方程ax²+ bx+ c的根,用三个函数分别求当b²-4ac大于0,小于0,等于0时的根并输出结果。从主函数输入a,b,c,的值
时间: 2024-11-04 08:10:39 浏览: 34
在C语言中,我们可以编写三个不同的函数来处理一元二次方程的解,根据判别式的条件(b² - 4ac > 0, b² - 4ac == 0, 或 b² - 4ac < 0)分别计算根。以下是针对三种情况的函数定义以及主函数:
```c
#include <stdio.h>
#include <math.h> // 引入数学库以使用sqrt函数
// 当判别式大于0时,方程有两个实根
void quadraticSolution(double a, double b, double c, double& x1, double& x2) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
x1 = (-b + sqrt(discriminant)) / (2 * a);
x2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程的两个实根是: x1 = %.2f, x2 = %.2f\n", x1, x2);
} else {
printf("方程无实根。\n");
}
}
// 判别式等于0时,方程有一个实根
void singleRootSolution(double a, double b, double c, double& x) {
double discriminant = b * b - 4 * a * c;
if (discriminant == 0) {
x = -b / (2 * a);
printf("方程的一个实根是: x = %.2f\n", x);
} else {
printf("输入错误:对于方程ax² + bx + c,判别式应该为0。\n");
}
}
// 判别式小于0时,方程无实根
void noRootSolution(double a, double b, double c) {
if (b * b - 4 * a * c < 0) {
printf("方程无实根。\n");
}
}
int main() {
double a, b, c;
printf("请输入a, b, c的值(以逗号分隔): ");
scanf("%lf,%lf,%lf", &a, &b, &c);
double x1, x2;
double x; // 只用于单根的情况
// 根据输入判断并调用对应的函数
if (a != 0 && b * b - 4 * a * c >= 0) { // 确保a不为0
quadraticSolution(a, b, c, x1, x2);
} else if (a != 0) {
singleRootSolution(a, b, c, x);
} else {
printf("无法计算:系数a不能为0。\n");
}
return 0;
}
```
在这段代码中,用户在主函数中输入a, b, c的值,然后根据每个函数的条件判断调用相应的求解函数。
阅读全文