求方程a*x*x +bx+c=0的根,用3个函数分别求当:b*b-4ac大于0、等于0和小于0时的根并输出结果。从主函数输入a,b,c的值。用c语言编写
时间: 2024-11-05 07:28:55 浏览: 27
用Java编写程序,求一元二次方程ax²+bx+c=0的根(系数在程序中给定),并输出。
在C语言中,我们可以使用条件语句结合数学公式来解决这个问题。首先,我们需要创建三个函数,每个函数负责计算判别式b² - 4ac的情况,并返回对应的解。下面是基本的代码框架:
```c
#include <stdio.h>
#include <math.h> // 引入math库以使用sqrt()函数
// 函数声明
double quadratic_roots(double a, double b, double c);
int main() {
double a, b, c;
printf("请输入二次方程的系数a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
// 调用函数并输出结果
if (b * b - 4 * a * c > 0) {
double root1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
double root2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
printf("当b² - 4ac > 0时,有两个实数根:%.2f 和 %.2f\n", root1, root2);
} else if (b * b - 4 * a * c == 0) {
double root = -b / (2 * a);
printf("当b² - 4ac = 0时,有一个实数根:%.2f\n", root);
} else {
printf("当b² - 4ac < 0时,没有实数根,但有两个复数根。\n");
}
return 0;
}
// 定义求解二次方程的函数
double quadratic_roots(double a, double b, double c) {
if (b * b - 4 * a * c >= 0) {
// 当判别式非负时计算根
return b / (2 * a);
} else {
// 使用复数形式表示根,这里通常不会直接打印出来,仅用于内部处理
complex_t realPart = -b / (2 * a);
complex_t imaginaryPart = sqrt(-4 * a * c) / (2 * a);
return complex(realPart, imaginaryPart);
}
}
```
这个程序首先接收用户输入的a, b, c,然后根据判别式的值调用`quadratic_roots`函数,并根据返回的结果判断和输出根。
阅读全文