C语言实现一元二次方程求根 - 完整代码及详解

本文将提供C语言代码,用于计算一元二次方程的根。代码会根据判别式的值,处理实根、重根和无实根的情况。

问题描述:

已知一元二次方程 ax^2 + bx + c = 0,从键盘输入 abc 的值后,计算并输出两个根的值,结果保留三位小数。(考虑 b^2 - 4ac > 0b^2 - 4ac = 0b^2 - 4ac < 0 三种情况)

输入:

a b c

输出:

x1=? x2=?

代码:

#include <stdio.h>
#include <math.h>

int main() {
    double a, b, c, discriminant, x1, x2;

    // 获取用户输入
    printf("请输入一元二次方程的系数 a、b、c:");
    scanf("%lf %lf %lf", &a, &b, &c);

    // 计算判别式
    discriminant = b * b - 4 * a * c;

    // 判断判别式的值并计算根
    if (discriminant > 0) {
        x1 = (-b + sqrt(discriminant)) / (2 * a);
        x2 = (-b - sqrt(discriminant)) / (2 * a);
        printf("x1=%.3lf x2=%.3lf\n", x1, x2);
    } else if (discriminant == 0) {
        x1 = -b / (2 * a);
        printf("x1=%.3lf x2=%.3lf\n", x1, x1);
    } else {
        printf("无实根\n");
    }

    return 0;
}

代码解释:

  1. 头文件包含: #include <stdio.h>#include <math.h> 分别用于输入输出操作和数学函数,例如 sqrt 函数用于计算平方根。
  2. 变量定义: 定义了六个双精度浮点型变量:abc 用于存储一元二次方程的系数,discriminant 用于存储判别式,x1x2 用于存储方程的两个根。
  3. 获取用户输入: 通过 printf 函数提示用户输入系数,然后使用 scanf 函数读取用户输入的 abc 的值。
  4. 计算判别式: 根据公式 b^2 - 4ac 计算判别式 discriminant 的值。
  5. 判断判别式并计算根:
    • 如果 discriminant > 0,则方程有两个实根,使用公式 (-b ± √discriminant) / (2a) 计算根,并使用 printf 函数输出结果,保留三位小数。
    • 如果 discriminant == 0,则方程有一个实根,使用公式 -b / (2a) 计算根,并使用 printf 函数输出结果,保留三位小数。
    • 如果 discriminant < 0,则方程无实根,直接使用 printf 函数输出“无实根”。
  6. 程序结束: 使用 return 0 结束程序。

使用说明:

  1. 将上述代码保存为 quadratic_equation.c 文件。
  2. 使用C语言编译器(如 GCC)编译该文件,例如:gcc quadratic_equation.c -o quadratic_equation
  3. 运行编译后的可执行文件 quadratic_equation,并在提示输入系数时,输入 abc 的值,即可计算并输出方程的根。

示例:

例如,输入 1 2 1 表示方程 x^2 + 2x + 1 = 0,则程序输出:

x1=-1.000 x2=-1.000

这表明方程有一个重根 x = -1

通过本文提供的代码和解释,您可以轻松地用C语言实现一元二次方程求根,并根据判别式的值判断方程是否有实根、是否为重根等情况。

C语言实现一元二次方程求根 - 完整代码及详解

原文地址: https://www.cveoy.top/t/topic/cR6f 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录