如何用C语言实现计算并输出一元二次方程的根的算法?
时间: 2024-11-03 20:22:04 浏览: 34
在C语言中,我们可以使用公式法或数值方法如牛顿迭代法来计算一元二次方程的根。这里我们提供一个基础版本,使用公式法来求解标准形式的一元二次方程ax^2 + bx + c = 0,其中a、b、c是已知实数且a != 0。
```c
#include <stdio.h>
#include <math.h>
void calculateQuadraticRoots(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("有两个实根: %.2f 和 %.2f\n", root1, root2);
} else if (discriminant == 0) { // 双重实根
double root = -b / (2 * a);
printf("有唯一实根: %.2f\n", root);
} else { // 两个共轭复根
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("有两个共轭复根: %.2f + %.2fi 和 %.2f - %.2fi\n", realPart, imaginaryPart, realPart, imaginaryPart);
}
}
int main() {
double a, b, c;
printf("请输入一元二次方程的系数(a, b, c): ");
scanf("%lf %lf %lf", &a, &b, &c);
if (a != 0) {
calculateQuadraticRoots(a, b, c);
} else {
printf("错误:a不能为零。\n");
}
return 0;
}
```
阅读全文