用C语言编写程序求方程ax2+bx+c=0的根,用3个函数分别求当:b2-4ac大于0、等于0和小于0时的根并输出结果。从主函数输入a、b、c 的值。
时间: 2023-10-06 21:06:41 浏览: 87
好的,这是一个很基础的 C 语言题目,我可以帮你解答。
首先,我们需要明确一下求解二次方程的公式:x = (-b ± sqrt(b^2 - 4ac)) / (2a)。
然后,我们可以编写三个函数,分别处理 b^2 - 4ac 大于 0、等于 0 和小于 0 时的情况。函数的返回值是根的个数,因为有些情况下二次方程可能没有实数根。
下面是完整的程序代码:
```c
#include <stdio.h>
#include <math.h>
int solve(double a, double b, double c);
int main() {
double a, b, c;
printf("请输入二次方程的系数 a、b、c:\n");
scanf("%lf %lf %lf", &a, &b, &c);
int num = solve(a, b, c);
if (num == 0) {
printf("该二次方程没有实数根!\n");
} else if (num == 1) {
printf("该二次方程有一个实数根:%.2lf\n", -b / (2 * a));
} else {
double x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
double x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
printf("该二次方程有两个实数根:%.2lf 和 %.2lf\n", x1, x2);
}
return 0;
}
int solve(double a, double b, double c) {
double delta = b * b - 4 * a * c;
if (delta > 0) {
return 2;
} else if (delta == 0) {
return 1;
} else {
return 0;
}
}
```
以上代码中的 `solve` 函数就是用来处理不同情况的。当 delta 大于 0 时,返回 2;当 delta 等于 0 时,返回 1;当 delta 小于 0 时,返回 0。
在 `main` 函数中,我们首先读入 a、b、c 的值,然后调用 `solve` 函数求解二次方程的根,并根据返回值输出不同的结果。
希望这个程序能够帮助到你!
阅读全文