c语言解一元二次方程求两解
时间: 2024-11-23 13:38:54 浏览: 19
在C语言中,解一元二次方程通常涉及计算二次公式(ax² + bx + c = 0)的根,其中a、b、c是已知系数。如果方程有两个实数解,我们可以使用下面的方法:
1. **判别式计算**:
- 计算判别式 `D = b² - 4ac`。若D > 0,则有两个不相等的实根;D = 0时,有一个重复的实根;D < 0,则无实根(有复数解)。
2. **求解公式**:
- 根据公式 `x₁ = (-b + √D) / 2a` 和 `x₂ = (-b - √D) / 2a` 来计算两个解。
下面是一个简单的C函数示例,用于求解一元二次方程:
```c
#include <stdio.h>
#include <math.h>
// 函数声明
void solve_quadratic(double a, double b, double c, double* x1, double* x2);
int main() {
double a, b, c;
printf("请输入二次方程的系数 (a, b, c): ");
scanf("%lf %lf %lf", &a, &b, &c);
// 判断是否有解
double discriminant = b * b - 4 * a * c;
if (discriminant >= 0) {
double root1, root2;
solve_quadratic(a, b, c, &root1, &root2);
printf("解为: x1 = %.2f, x2 = %.2f\n", root1, root2);
} else {
printf("方程无实数解!\n");
}
return 0;
}
// 解决函数
void solve_quadratic(double a, double b, double c, double* x1, double* x2) {
*x1 = (-b + sqrt(discriminant)) / (2 * a);
*x2 = (-b - sqrt(discriminant)) / (2 * a);
}
```
记得处理用户输入错误和特殊情况,并使用`<math.h>`库来访问`sqrt()`函数。
阅读全文