在C语言中,求解一元二次方程 \(ax^2 + bx + c = 0\) 的步骤如下:
引入数学库 :首先需要引入数学库,以便使用平方根函数 `sqrt`。计算判别式:
计算判别式 \(\Delta = b^2 - 4ac\)。
判断判别式的值
如果 \(\Delta > 0\),方程有两个不相等的实数根。
如果 \(\Delta = 0\),方程有两个相等的实数根(一个重根)。
如果 \(\Delta < 0\),方程无实数根。
计算根
如果 \(\Delta \geq 0\),使用公式 \(x = \frac{-b \pm \sqrt{\Delta}}{2a}\) 计算两个根。
```c
include include int main() { double a, b, c, delta, root1, root2; printf("请输入一元二次方程的系数a, b, c:\n"); scanf("%lf %lf %lf", &a, &b, &c); if (a == 0) { if (b == 0) { if (c == 0) { printf("x可以是任意数\n"); } else { printf("方程不成立\n"); } } else { printf("方程是一元一次方程, x = %lf\n", -c / b); } } else { delta = b * b - 4 * a * c; if (delta > 0) { root1 = (-b + sqrt(delta)) / (2 * a); root2 = (-b - sqrt(delta)) / (2 * a); printf("方程有两个不相等的实数根: %.2lf 和 %.2lf\n", root1, root2); } else if (delta == 0) { root1 = root2 = -b / (2 * a); printf("方程有两个相等的实数根: x1 = x2 = %.2lf\n", root1); } else { printf("方程无实数根\n"); } } return 0; } ``` 代码说明: 程序首先提示用户输入一元二次方程的系数 \(a\)、\(b\) 和 \(c\)。 如果 \(a = 0\) 且 \(b \neq 0\),则方程退化为一元一次方程,直接计算 \(x = -\frac{c}{b}\)。 计算 \(\Delta = b^2 - 4ac\)。 判断判别式的值 如果 \(\Delta > 0\),计算两个不相等的实数根 \(x_1\) 和 \(x_2\)。 如果 \(\Delta = 0\),计算两个相等的实数根 \(x_1 = x_2 = -\frac{b}{2a}\)。 如果 \(\Delta < 0\),输出“方程无实数根”。 这个程序涵盖了所有可能的情况,并能够正确计算一元二次方程的解。输入系数:
判断是否为二次方程:
计算判别式: