c语言程序求一元二次方程的根
时间: 2024-10-24 18:09:59 浏览: 32
在C语言中,求解一元二次方程ax² + bx + c = 0通常需要使用数学库中的函数,如`sqrt()`。下面是一个基本的步骤来编写这样的程序:
1. 首先检查方程是否可以有实数解,即判别式D = b² - 4ac大于等于0。
2. 如果D > 0,有两个不同的实数根,通过公式 x = [-b ± sqrt(D)] / (2a) 来计算。
3. 如果D == 0,有一个重根,x = -b / (2a)。
4. 如果D < 0,意味着无实根,但是可以使用复数解,这里一般不需要特别处理,因为标准库不直接支持复数运算。
以下是简单的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: %.2lf and %.2lf\n", root1, root2);
} else if (discriminant == 0) {
double root = -b / (2 * a);
printf("Root is real and repeated: %.2lf\n", root);
} else {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("Roots are complex: %.2lf + %.2lfi and %.2lf - %.2lfi\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;
}
```
阅读全文