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 函数计算判别式,然后根据判别式的值判断方程的根的情况。如果判别式为正,则有两个实根;如果为零,则有一个重根;如果为负,则有两个虚根。分别调用 calculateRealRoots 和 calculateComplexRoots 函数计算并输出根的值。在实现时,注意处理虚数部分的计算。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论