用c语言求 ax^2+bx+c=0 的根。分别考虑 d=b^2-4ac 大于 0,等于和小于 0 这 3种情况
时间: 2024-09-22 11:08:32 浏览: 68
C语言,no.1,11,11
在C语言中,对于二次方程ax^2 + bx + c = 0,我们需要使用二次公式来求解根。二次公式是:x = [-b ± sqrt(b^2 - 4ac)] / 2a。这里sqrt表示平方根,±表示结果可能是正负两个值,取决于判别式d=b^2 - 4ac的符号。
以下是三种情况下的处理方式:
1. 当d > 0 (即判别式大于零):
```c
double a, b, c, discriminant, root1, root2;
// 输入系数
scanf("%lf %lf %lf", &a, &b, &c);
discriminant = b * b - 4 * a * c;
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("当d > 0时,两个实根为:%.2f 和 %.2f\n", root1, root2);
```
2. 当d = 0 (即判别式等于零):
```c
if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("当d = 0时,唯一实根为:%.2f\n", root1);
}
```
3. 当d < 0 (即判别式小于零,意味着无实根,有两个共轭复数根):
```c
if (discriminant < 0) {
complex_t realPart = -b / (2 * a);
complex_t imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("当d < 0时,无实根,有两对共轭复数根(%.2f + i*%.2f)和(%.2f - i*%.2f)\n", realPart, imaginaryPart, realPart, imaginaryPart);
}
```
注意:为了处理复数根,你需要引入`complex.h`头文件,并定义一个名为`complex_t`的结构体来表示复数。
阅读全文