C语言一元二次方程求根公式当b为负数怎么打

如题所述

第1个回答  2023-03-09
一元二次方程求根公式为:

x = (-b ± sqrt(b^2 - 4ac)) / (2a)

如果 b 为负数,可以在表达式中加上括号,将其转换为正数再进行计算,即:

x = (-b ± sqrt(b * b - 4 * a * c)) / (2 * a)

这样就可以避免在计算平方根时出现负数的情况。

以下是一个简单的 C 语言程序,使用上述公式计算一元二次方程的根:

```c
#include <stdio.h>
#include <math.h>

int main() {
float a, b, c, discriminant, root1, root2;

printf("Enter coefficients a, b and c: ");
scanf("%f%f%f", &a, &b, &c);

discriminant = b * b - 4 * a * c;

if (discriminant > 0) {
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("Roots are real and different.\n");
printf("Root1 = %.2f\nRoot2 = %.2f\n", root1, root2);
} else if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("Roots are real and same.\n");
printf("Root1 = Root2 = %.2f\n", root1);
} else {
printf("Roots are complex and different.\n");
printf("Root1 = %.2f + %.2fi\n", -b / (2 * a), sqrt(-discriminant) / (2 * a));
printf("Root2 = %.2f - %.2fi\n", -b / (2 * a), sqrt(-discriminant) / (2 * a));
}

return 0;
}
```

在上述代码中,我们首先读取用户输入的系数 a、b 和 c,然后计算判别式 `discriminant` 的值。如果判别式为正数,则输出实数根的结果;如果判别式为零,则输出相等实数根的结果;如果判别式为负数,则输出复数根的结果。需要注意的是,在计算复数根时,需要使用虚数单位 i 表示其中的虚部,并将其输出到控制台。

例如,如果用户输入系数 a = 2,b = -7 和 c = 5,则程序将输出以下结果:

```
Roots are real and different.
Root1 = 2.50
Root2 = 1.00
```

需要注意的是,在实际应用中还需要考虑更多的边界情况和错误处理。例如,需要检查输入参数是否合法,以及在计算过程中是否出现除零等错误。
相似回答
大家正在搜