用C语言求一元二次方程的实数根
时间: 2024-11-04 14:15:16 浏览: 14
在C语言中,求解一元二次方程ax^2 + bx + c = 0的实数根通常使用公式法,也就是著名的“韦达定理”,它告诉我们如果一元二次方程有实数根,那么两个根之和等于-b/a,两根之积等于c/a。以下是简单的步骤:
1. 首先检查判别式Δ = b^2 - 4ac,如果Δ < 0,则方程无实数根;如果Δ = 0,则有两个相等的实根;如果Δ > 0,则有两个不同的实根。
2. 计算两个根(设为x1和x2):
- 如果Δ > 0,分别计算两个实数根:x1 = (-b + sqrt(Δ)) / (2a) 和 x2 = (-b - sqrt(Δ)) / (2a)
- 如果Δ = 0,只需取其中一个根:x1 = -b / (2a)
下面是一个简单的C函数示例,用于求解实数根:
```c
#include <stdio.h>
#include <math.h>
void quadratic(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant >= 0) {
double root1 = (-b + sqrt(discriminant)) / (2 * a);
double root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("Roots are real and distinct:\n");
printf("x1 = %.2lf\n", root1);
printf("x2 = %.2lf\n", root2);
} else if (discriminant == 0) {
double root = -b / (2 * a);
printf("Root is real and repeated:\n");
printf("x = %.2lf\n", root);
} else {
printf("Roots are complex.\n");
}
}
int main() {
double a, b, c;
printf("Enter coefficients a, b, and c: ");
scanf("%lf %lf %lf", &a, &b, &c);
quadratic(a, b, c);
return 0;
}
```
阅读全文