首页 > 编程笔记

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

一元二次方程是高中数学中最基本的内容之一,其求解方法可以通过多种方式实现,本文将介绍如何使用C语言来求解一元二次方程的根。

一元二次方程的一般形式为ax^2+bx+c=0,其中 a、b、c 为已知常数,x 为未知变量。求解一元二次方程的根可以使用公式法或配方法等方式,其中公式法是最常见的求解方式之一。

公式法是指通过求解一元二次方程的解析式,通过代入 a、b、c 的值,得到方程的根。一元二次方程的解析式为:

x = (-b ± sqrt(b^2 - 4ac)) / 2a

其中,sqrt 为平方根函数,b^2-4ac 为判别式,当判别式大于 0 时,方程有两个实数根;当判别式等于 0 时,方程有一个实数根;当判别式小于 0 时,方程没有实数根,但有两个共轭复数根。

下面通过C语言程序来实现一元二次方程的求解。我们先定义一个函数,该函数用于计算一元二次方程的根,输入三个已知常数 a、b、c,返回一个结构体变量,该变量包含两个实数根 x1、x2 和一个标志 flag,用于表示方程的根的情况。具体代码如下:
#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("方程有两个实根:root1 = %.2lf,root2 = %.2lf\n", root1, root2);
    }
    else if (discriminant == 0) {
        root1 = root2 = -b / (2 * a);

        printf("方程有一个实根:root1 = root2 = %.2lf\n", root1);
    }
    else {
        realPart = -b / (2 * a);
        imagPart = sqrt(-discriminant) / (2 * a);

        printf("方程有两个虚根:root1 = %.2lf + %.2lf i,root2 = %.2lf - %.2lf i\n",
               realPart, imagPart, realPart, imagPart);
    }

    return 0;
}
其中,变量 a、b、c 分别表示一元二次方程 ax^2+bx+c=0 中的系数,discriminant 表示判别式,root1、root2 表示方程的两个实根,realPart、imagPart 表示方程的两个虚根。

首先,程序会提示用户输入 a、b、c 的值,然后使用 scanf 函数读取用户的输入。

接着,程序计算判别式,根据判别式的值判断方程有多少个实根或虚根。如果判别式大于0,则方程有两个实根,使用公式计算并输出;如果判别式等于0,则方程有一个实根,计算后输出;否则方程有两个虚根,计算后输出。

最后,程序使用return 0语句结束运行。

推荐阅读