C语言如何解ax²+bx+c=0方程?

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

C语言实现求解二次方程 ax² + bx + c = 0

以下是一个完整的C语言程序,用于求解二次方程 ax² + bx + c = 0 的根:

ax 2 bx c=0 c语言
(图片来源网络,侵删)
#include <stdio.h>
#include <math.h>
int main() {
    double a, b, c;
    double 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. 判别式计算:计算判别式 Δ = b² - 4ac,用于确定根的性质。

  3. 三种情况处理

    • Δ > 0:方程有两个不同的实数根
    • Δ = 0:方程有两个相同的实数根(重根)
    • Δ < 0:方程有一对共轭复数根
  4. 输出结果:根据不同情况输出相应的根。

    ax 2 bx c=0 c语言
    (图片来源网络,侵删)

注意事项:

  1. 程序使用了math.h库中的sqrt()函数,编译时可能需要链接数学库(在Linux下使用-lm选项)。

  2. 对于a=0的情况,程序会将其视为线性方程 bx + c = 0,但未做特殊处理,如果需要处理这种情况,可以添加额外的判断。

  3. 输出格式为两位小数,可以根据需要调整。

  4. 对于非常大的或非常小的系数,可能需要考虑数值稳定性问题。

    ax 2 bx c=0 c语言
    (图片来源网络,侵删)
-- 展开阅读全文 --
头像
Linux C语言编程PDF哪里找?
« 上一篇 01-11
织梦自定义模型图片如何调用?
下一篇 » 01-12

相关文章

取消
微信二维码
支付宝二维码

目录[+]