C语言 求方程ax*2+bx+c=0的根,用三个函数分别求当:b*2-4ac大于零,等于零和小于零时的根并输出结果,从主函数输入a,b,c的值
时间: 2024-01-21 19:18:53 浏览: 184
下面是实现此功能的代码:
```c
#include <stdio.h>
#include <math.h>
// 函数声明
void solve(double a, double b, double c);
void printRoot(double x1, double x2);
double getDiscriminant(double a, double b, double c);
int main()
{
double a, b, c;
printf("请输入方程的系数:\n");
scanf("%lf %lf %lf", &a, &b, &c);
solve(a, b, c);
return 0;
}
// 计算并输出根
void printRoot(double x1, double x2)
{
printf("方程的根为:\n");
printf("x1 = %.2f\n", x1);
printf("x2 = %.2f\n", x2);
}
// 计算判别式
double getDiscriminant(double a, double b, double c)
{
return b * b - 4 * a * c;
}
// 求方程的根
void solve(double a, double b, double c)
{
double discriminant = getDiscriminant(a, b, c);
if (discriminant > 0) {
double x1 = (-b + sqrt(discriminant)) / (2 * a);
double x2 = (-b - sqrt(discriminant)) / (2 * a);
printRoot(x1, x2);
} else if (discriminant == 0) {
double x = -b / (2 * a);
printf("方程有唯一实根:\n");
printf("x = %.2f\n", x);
} else {
printf("方程无实根\n");
}
}
```
该程序定义了三个函数:
- `solve()`:根据输入的系数求出方程的根,并调用 `printRoot()` 函数输出结果。
- `printRoot()`:输出方程的根。
- `getDiscriminant()`:计算方程的判别式。
在主函数中,用户需要输入方程的系数,然后调用 `solve()` 函数来计算方程的根。程序会根据判别式的大小分别输出有实根、有唯一实根和无实根的情况。
阅读全文