如何用c语言实现解一元二次方程
时间: 2024-09-30 14:16:27 浏览: 43
在C语言中,可以使用公式法来解一元二次方程ax^2 + bx + c = 0。这里我们假设a != 0,因为当a=0时,方程就不再是二次方程了。以下是步骤:
1. 计算判别式Δ = b^2 - 4ac。
如果Δ > 0,方程有两个实根;
如果Δ = 0,方程有一个重根(两个相同的实根);
如果Δ < 0,方程有两个复数根。
2. 根据判别式的值计算根的表达式:
a. 实根:x1 = (-b + sqrt(Δ)) / (2a) 和 x2 = (-b - sqrt(Δ)) / (2a)。
b. 复数根(仅当Δ < 0):x1 = (-b / (2a)) + i(sqrt(-Δ) / (2a)) 和 x2 = (-b / (2a)) - i(sqrt(-Δ) / (2a)),其中i是虚数单位。
下面是一个简单的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%.2lf and %.2lf\n", root1, root2);
} else if (discriminant == 0) {
double root = -b / (2 * a);
printf("Root is real and repeated:\n%.2lf\n", root);
} else {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("Roots are complex conjugates:\n%.2lf + %.2fi and %.2lf - %.2fi\n",
realPart, imaginaryPart, realPart, imaginaryPart);
}
}
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;
}
```
运行这个程序时,用户需要输入系数a、b和c,程序会输出相应的解。
阅读全文