求解一元二次方程的根 方程有解 c语言
时间: 2024-10-22 13:01:11 浏览: 39
一元二次方程求根(小白易懂版)
求解一元二次方程ax^2 + bx + c = 0 的根,在C语言中通常使用公式法或数值方法。这里我们主要讲解公式法,即利用二次公式:
\[ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
步骤如下:
1. 首先检查判别式 `b^2 - 4ac` 的值,判断方程是否有实数解:
- 当判别式大于0(`b^2 - 4ac > 0`),方程有两个不同的实数解;
- 判别式等于0(`b^2 - 4ac = 0`),方程有一个重根(重复的实数解);
- 判别式小于0(`b^2 - 4ac < 0`),方程无实数解,但是有复数解。
2. 根据判别式的值计算两个解:
- 如果是两个不同的实数解,分别代入公式计算;
- 如果是重根,只需计算一次,因为它们相等。
下面是一个简单的C程序示例,展示了如何实现这个功能:
```c
#include <stdio.h>
#include <math.h>
void solve_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("Root 1: %.2lf\n", root1);
printf("Root 2: %.2lf\n", root2);
} else {
printf("Roots are complex:\n");
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("Root 1: %.2lf + %.2lfi\n", realPart, imaginaryPart);
printf("Root 2: %.2lf - %.2lfi\n", realPart, imaginaryPart);
}
}
int main() {
double a, b, c;
printf("Enter coefficients for ax^2 + bx + c = 0: ");
scanf("%lf %lf %lf", &a, &b, &c);
solve_quadratic(a, b, c);
return 0;
}
```
阅读全文