c語言如何求一元二次方程根

小億
200
2024-10-11 17:23:16
欄目: 編程語言

在C語言中,可以使用求根公式來求解一元二次方程的根。一元二次方程的一般形式為ax^2 + bx + c = 0,其求根公式為x = (-b ± √(b^2 - 4ac)) / (2a)。

以下是一個(gè)C語言程序,用于求解一元二次方程的根:

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

int main() {
    double a, b, c, discriminant, root1, root2;

    // 輸入方程系數(shù)
    printf("請(qǐng)輸入一元二次方程的系數(shù)a, b, c: ");
    scanf("%lf %lf %lf", &a, &b, &c);

    // 計(jì)算判別式
    discriminant = b * b - 4 * a * c;

    // 判斷判別式的大小,以確定方程的根的情況
    if (discriminant > 0) {
        // 兩個(gè)不相等的實(shí)根
        root1 = (-b + sqrt(discriminant)) / (2 * a);
        root2 = (-b - sqrt(discriminant)) / (2 * a);
        printf("方程有兩個(gè)不相等的實(shí)根: root1 = %.2lf, root2 = %.2lf\n", root1, root2);
    } else if (discriminant == 0) {
        // 兩個(gè)相等的實(shí)根(一個(gè)重根)
        root1 = root2 = -b / (2 * a);
        printf("方程有兩個(gè)相等的實(shí)根(一個(gè)重根): root1 = root2 = %.2lf\n", root1);
    } else {
        // 兩個(gè)共軛復(fù)根
        double realPart = -b / (2 * a);
        double imaginaryPart = sqrt(-discriminant) / (2 * a);
        printf("方程有兩個(gè)共軛復(fù)根: root1 = %.2lf + %.2lfi, root2 = %.2lf - %.2lfi\n", realPart, imaginaryPart, realPart, imaginaryPart);
    }

    return 0;
}

在這個(gè)程序中,首先輸入一元二次方程的系數(shù)a、b和c。然后計(jì)算判別式discriminant,并根據(jù)其值判斷方程的根的情況。如果判別式大于0,則方程有兩個(gè)不相等的實(shí)根;如果判別式等于0,則方程有兩個(gè)相等的實(shí)根(一個(gè)重根);如果判別式小于0,則方程有兩個(gè)共軛復(fù)根。最后,根據(jù)判別式的值計(jì)算并輸出方程的根。

0