编写求解一元二次方程 ax2+bx+c=0 根的过程,要求输入系数ab,c和输出根x1、x2 的操作放在主函数中,求解根的部分通过一个求 根函数实现。
时间: 2023-12-14 10:39:51 浏览: 180
可以使用公式法求解一元二次方程的根,具体实现可以参考下面的代码:
```c
#include <stdio.h>
#include <math.h>
// 求解一元二次方程的根
void solve_quadratic_equation(float a, float b, float c, float *x1, float *x2) {
float delta = b * b - 4 * a * c; // 计算判别式
if (delta < 0) { // 无实数根
*x1 = *x2 = NAN;
} else if (delta == 0) { // 重根
*x1 = *x2 = -b / (2 * a);
} else { // 两个不同的实数根
*x1 = (-b + sqrt(delta)) / (2 * a);
*x2 = (-b - sqrt(delta)) / (2 * a);
}
}
int main() {
float a, b, c, x1, x2;
printf("请输入一元二次方程的系数 a, b, c:\n");
scanf("%f%f%f", &a, &b, &c);
solve_quadratic_equation(a, b, c, &x1, &x2);
if (isnan(x1)) { // 无实数根
printf("该方程无实数根!\n");
} else if (x1 == x2) { // 重根
printf("该方程的唯一实数根为 %.2f\n", x1);
} else { // 两个不同的实数根
printf("该方程的两个实数根为 %.2f 和 %.2f\n", x1, x2);
}
return 0;
}
```
在上述代码中,我们定义了一个 `solve_quadratic_equation()` 函数,用于求解一元二次方程的根。通过传入系数 a、b、c 和输出参数 x1、x2 来计算方程的根。具体实现中,我们使用判别式 delta 来判断方程有没有实数根,以及有多少个实数根。如果 delta 小于 0,则无实数根;如果 delta 等于 0,则有一个重根;否则就有两个不同的实数根。
在主函数中,我们先提示用户输入方程的系数 a、b、c,然后调用 `solve_quadratic_equation()` 函数计算方程的根,并根据根的情况输出相应的信息。
阅读全文