C语言计算一元二次方程的两个根
时间: 2024-10-17 14:05:04 浏览: 12
在C语言中,计算一元二次方程ax^2 + bx + c = 0的两个根通常需要使用公式法或者数值解法,如牛顿迭代法。这里我们介绍最基础的方法——公式法。给定系数a、b和c,根据求根公式:
x1 = [-b + sqrt(b^2 - 4ac)] / (2a)
x2 = [-b - sqrt(b^2 - 4ac)] / (2a)
其中sqrt()表示平方根。如果b^2 - 4ac小于零,则方程无实数解,会有复数根。
以下是简单的C语言函数示例:
```c
#include <stdio.h>
#include <math.h> // 引入数学库,用于sqrt()
void quadratic_root(double a, double b, double c) {
double discriminant = b * b - 4 * a * c; // 计算判别式
double root1, root2;
if (discriminant > 0) { // 有两个不同的实数根
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程的两个根为: %.2lf 和 %.2lf\n", root1, root2);
} else if (discriminant == 0) { // 有一个实数根(重根)
root1 = -b / (2 * a);
printf("方程有唯一实数根: %.2lf\n", root1);
} else { // 有两个复数根
double imaginary_part = sqrt(-discriminant) / (2 * a);
printf("方程有两个共轭复数根: %.2lf + %.2lfi 和 %.2lf - %.2lfi\n",
-b / (2 * a), imaginary_part, -b / (2 * a), -imaginary_part);
}
}
int main() {
double a, b, c;
printf("请输入一元二次方程的系数(a, b, c): ");
scanf("%lf %lf %lf", &a, &b, &c);
quadratic_root(a, b, c);
return 0;
}
```
用户输入三个系数后,程序会计算并打印出相应的一元二次方程的根。记得运行前检查用户输入是否有效哦!
阅读全文