C语言中如何求解ax²+bx+c=0的根?

99ANYc3cd6
预计阅读时长 7 分钟
位置: 首页 C语言 正文

在C语言中,求解二次方程 ( ax^2 + bx + c = 0 ) 的根需要考虑判别式 ( D = b^2 - 4ac ) 的不同情况,以下是完整的C语言实现代码,包含注释说明:

c语言ax 2 bx c=0的根
(图片来源网络,侵删)
#include <stdio.h>
#include <math.h>
int main() {
    double a, b, c, discriminant, root1, root2, realPart, imagPart;
    // 输入方程系数
    printf("请输入二次方程的系数 a, b, c: ");
    scanf("%lf %lf %lf", &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("方程有两个不同的实数根:\n");
        printf("root1 = %.2lf\n", root1);
        printf("root2 = %.2lf\n", root2);
    } else if (discriminant == 0) {
        // 两个相同的实数根
        root1 = root2 = -b / (2 * a);
        printf("方程有两个相同的实数根:\n");
        printf("root1 = root2 = %.2lf\n", root1);
    } else {
        // 共轭复数根
        realPart = -b / (2 * a);
        imagPart = sqrt(-discriminant) / (2 * a);
        printf("方程有共轭复数根:\n");
        printf("root1 = %.2lf + %.2lfi\n", realPart, imagPart);
        printf("root2 = %.2lf - %.2lfi\n", realPart, imagPart);
    }
    return 0;
}

代码说明:

  1. 输入系数:用户需要输入二次方程的系数 ( a )、( b )、( c )。
  2. 判别式计算:计算 ( D = b^2 - 4ac )。
  3. 三种情况处理
    • ( D > 0 ):两个不同的实数根,公式为 ( \frac{-b \pm \sqrt{D}}{2a} )。
    • ( D = 0 ):两个相同的实数根,公式为 ( \frac{-b}{2a} )。
    • ( D < 0 ):共轭复数根,实部为 ( \frac{-b}{2a} ),虚部为 ( \frac{\sqrt{-D}}{2a} )。

示例运行:

情况1:两个不同的实数根

输入:

1 -3 2

输出:

方程有两个不同的实数根:
root1 = 2.00
root2 = 1.00

情况2:两个相同的实数根

输入:

1 2 1

输出:

c语言ax 2 bx c=0的根
(图片来源网络,侵删)
方程有两个相同的实数根:
root1 = root2 = -1.00

情况3:共轭复数根

输入:

1 2 5

输出:

方程有共轭复数根:
root1 = -1.00 + 2.00i
root2 = -1.00 - 2.00i

注意事项:

  • 确保输入的 ( a \neq 0 ),否则方程不再是二次方程。
  • 使用 math.h 中的 sqrt() 函数时,可能需要链接数学库(编译时加 -lm 选项,如 gcc program.c -o program -lm)。
-- 展开阅读全文 --
头像
visual c 语言参考手册
« 上一篇 2025-12-23
Eclipse C语言环境搭建步骤是怎样的?
下一篇 » 2025-12-23
取消
微信二维码
支付宝二维码

目录[+]