一元二次方程解法(C语言实现)
一元二次方程的一般形式为:ax² + bx + c = 0,其中a、b、c为实数,且a≠0,以下是使用C语言求解一元二次方程的完整代码实现:

(图片来源网络,侵删)
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double discriminant, root1, root2;
// 输入方程系数
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("方程有两个不同的实数根:\n");
printf("根1 = %.2lf\n", root1);
printf("根2 = %.2lf\n", root2);
}
else if (discriminant == 0) {
// 两个相同的实数根
root1 = -b / (2 * a);
printf("方程有两个相同的实数根:\n");
printf("根 = %.2lf\n", root1);
}
else {
// 两个共轭复数根
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("方程有两个共轭复数根:\n");
printf("根1 = %.2lf + %.2lfi\n", realPart, imaginaryPart);
printf("根2 = %.2lf - %.2lfi\n", realPart, imaginaryPart);
}
return 0;
}
代码说明
-
输入处理:程序首先要求用户输入一元二次方程的三个系数a、b、c。
-
判别式计算:计算判别式Δ = b² - 4ac,它决定了方程根的性质。
-
根的情况判断:
- 当Δ > 0时,方程有两个不同的实数根
- 当Δ = 0时,方程有两个相同的实数根(即一个重根)
- 当Δ < 0时,方程有两个共轭复数根
-
输出结果:根据不同的情况输出方程的根。
(图片来源网络,侵删)
示例运行
示例1:两个不同的实数根
输入:
1 -3 2
输出:
方程有两个不同的实数根:
根1 = 2.00
根2 = 1.00
示例2:两个相同的实数根
输入:
1 2 1
输出:

(图片来源网络,侵删)
方程有两个相同的实数根:
根 = -1.00
示例3:两个共轭复数根
输入:
1 2 5
输出:
方程有两个共轭复数根:
根1 = -1.00 + 2.00i
根2 = -1.00 - 2.00i
注意事项
- 确保输入的a不为0,否则不是一元二次方程。
- 使用
math.h库中的sqrt()函数计算平方根。 - 对于复数根的情况,输出时注意虚数单位i的表示。
- 程序中使用了
%lf格式说明符来读取和打印双精度浮点数。
