在C语言中,求解一元二次方程 \( ax^2 + bx + c = 0 \) 的步骤如下:
输入系数 :首先,用户需要输入三个系数 \( a \), \( b \), 和 \( c \)。计算判别式:
计算判别式 \( \Delta = b^2 - 4ac \)。
判断解的情况
如果 \( \Delta > 0 \),方程有两个不相等的实数根。
如果 \( \Delta = 0 \),方程有两个相等的实数根(一个重根)。
如果 \( \Delta < 0 \),方程没有实数根,但有两个共轭复数根。
计算根
如果 \( \Delta \geq 0 \),使用公式 \( x = \frac{-b \pm \sqrt{\Delta}}{2a} \) 计算两个根。
如果 \( \Delta < 0 \),计算两个复数根 \( x_1 = \frac{-b + i\sqrt{-\Delta}}{2a} \) 和 \( x_2 = \frac{-b - i\sqrt{-\Delta}}{2a} \),其中 \( i \) 是虚数单位。
```c
include include void Cal(double a, double b, double c) { double disc = b * b - 4 * a * c; if (disc < 0) { printf("该方程没有实数根\n"); } else { double p = -b / (2.0 * a); double q = sqrt(disc) / (2.0 * a); double x1 = p + q; double x2 = p - q; printf("x1的值是 %lf\n", x1); printf("x2的值是 %lf\n", x2); } } int main() { double a, b, c; printf("请输入三个参数:\n"); scanf("%lf %lf %lf", &a, &b, &c); Cal(a, b, c); return 0; } ``` 代码解释: 使用 `scanf` 函数从用户那里获取三个系数 \( a \), \( b \), 和 \( c \)。 计算 \( \Delta = b^2 - 4ac \)。 如果 \( \Delta < 0 \),输出“该方程没有实数根”。 否则,计算两个根 \( x_1 \) 和 \( x_2 \) 并输出。 使用示例: 1. 编译程序: ```sh gcc -o quadratic quadratic.c ``` 2. 运行程序: ```sh ./quadratic ``` 3. 输入三个系数,例如: ``` 请输入三个参数: 1 -3 2 ``` 4. 程序将输出方程的根: ``` x1的值是 2.000000 x2的值是 -1.000000 ``` 这个程序可以处理实数系数的一元二次方程,并且能够正确计算出方程的根(包括重根和复数根)。输入部分
计算判别式
判断解的情况