C语言如何精确求解一元二次方程的根?

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

C语言求解一元二次方程的根

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

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

程序说明

  1. 输入处理:程序首先要求用户输入一元二次方程的三个系数 a, b, c。

  2. 判别式计算:计算判别式 Δ = b² - 4ac,这是判断根的性质的关键。

  3. 根的情况判断

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

    c语言 求一元二次方程的根
    (图片来源网络,侵删)

示例运行

示例1:两个不同的实数根

输入:

1 -3 2

输出:

方程有两个不同的实数根:
根1 = 2.00
根2 = 1.00

示例2:一个实数重根

输入:

1 2 1

输出:

c语言 求一元二次方程的根
(图片来源网络,侵删)
方程有一个实数重根:
根 = -1.00

示例3:两个共轭复数根

输入:

1 2 5

输出:

方程有两个共轭复数根:
根1 = -1.00 + 2.00i
根2 = -1.00 - 2.00i

注意事项

  1. 程序使用了math.h库中的sqrt()函数来计算平方根,编译时可能需要链接数学库(使用-lm选项)。

  2. 对于浮点数比较,直接使用可能不精确,但在判别式为0的情况下,这种简单比较通常足够。

  3. 程序假设用户输入的是有效的数字,没有进行输入验证,在实际应用中,可能需要添加输入验证代码。

-- 展开阅读全文 --
头像
求一元二次方程的根 c语言
« 上一篇 03-18
福建计算机二级C语言考试考什么?
下一篇 » 03-18

相关文章

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

目录[+]