c语言求一元二次方程ax2+bx+c=0的根三个函数
一元二次方程 ax2+bx+c=0ax^2 + bx + c = 0ax2+bx+c=0 是一种常见的数学问题,可以通过求根公式来解决。以下是用C语言编写的三个函数,用于计算一元二次方程的根。这三个函数分别为:计算判别式的函数、计算实根的函数和计算虚根的函数。
#include <stdio.h>
#include <math.h>
// 函数声明
double calculateDiscriminant(double a, double b, double c);
void calculateRealRoots(double a, double b, double c);
void calculateComplexRoots(double a, double b, double c);
int main() {
    // 输入系数
    double a, b, c;
    printf("请输入一元二次方程的系数(a、b、c):\n");
    scanf("%lf %lf %lf", &a, &b, &c);
    // 计算判别式
    double discriminant = calculateDiscriminant(a, b, c);
    if (discriminant > 0) {
        // 有两个实根
        calculateRealRoots(a, b, c);
    } else if (discriminant == 0) {
        // 有一个实根
        double root = -b / (2 * a);
        printf("方程有一个重根:x = %.4f\n", root);
    } else {
        // 有两个虚根
        calculateComplexRoots(a, b, c);
    }
    return 0;
}
// 计算判别式的函数
double calculateDiscriminant(double a, double明解c语言 b, double c) {
    return b * b - 4 * a * c;
}
// 计算实根的函数
void calculateRealRoots(double a, double b, double c) {
    double root1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
    double root2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
    printf("方程有两个实根:\n");
    printf("根1 = %.4f\n", root1);
    printf("根2 = %.4f\n", root2);
}
// 计算虚根的函数
void calculateComplexRoots(double a, double b, double c) {
    double realPart = -b / (2 * a);
    double imaginaryPart = sqrt(fabs(calculateDiscriminant(a, b, c))) / (2 * a);
    printf("方程有两个虚根:\n");
    printf("根1 = %.4f + %.4fi\n", realPart, imaginaryPart);
    printf("根2 = %.4f - %.4fi\n", realPart, imaginaryPart);
}
这个C程序中,首先通过 calculateDiscriminant 函数计算判别式,然后根据判别式的值判断方程的根的情况。如果判别式为正,则有两个实根;如果为零,则有一个重根;如果为负,则有两个虚根。分别调用 calculateRealRootscalculateComplexRoots 函数计算并输出根的值。在实现时,注意处理虚数部分的计算。