C语言实现一元二次方程求根 - 完整代码及详解
C语言实现一元二次方程求根 - 完整代码及详解
本文将提供C语言代码,用于计算一元二次方程的根。代码会根据判别式的值,处理实根、重根和无实根的情况。
问题描述:
已知一元二次方程 ax^2 + bx + c = 0,从键盘输入 a、b、c 的值后,计算并输出两个根的值,结果保留三位小数。(考虑 b^2 - 4ac > 0、b^2 - 4ac = 0、b^2 - 4ac < 0 三种情况)
输入:
a b c
输出:
x1=? x2=?
代码:
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, discriminant, x1, x2;
// 获取用户输入
printf("请输入一元二次方程的系数 a、b、c:");
scanf("%lf %lf %lf", &a, &b, &c);
// 计算判别式
discriminant = b * b - 4 * a * c;
// 判断判别式的值并计算根
if (discriminant > 0) {
x1 = (-b + sqrt(discriminant)) / (2 * a);
x2 = (-b - sqrt(discriminant)) / (2 * a);
printf("x1=%.3lf x2=%.3lf\n", x1, x2);
} else if (discriminant == 0) {
x1 = -b / (2 * a);
printf("x1=%.3lf x2=%.3lf\n", x1, x1);
} else {
printf("无实根\n");
}
return 0;
}
代码解释:
- 头文件包含:
#include <stdio.h>和#include <math.h>分别用于输入输出操作和数学函数,例如sqrt函数用于计算平方根。 - 变量定义: 定义了六个双精度浮点型变量:
a、b、c用于存储一元二次方程的系数,discriminant用于存储判别式,x1和x2用于存储方程的两个根。 - 获取用户输入: 通过
printf函数提示用户输入系数,然后使用scanf函数读取用户输入的a、b、c的值。 - 计算判别式: 根据公式
b^2 - 4ac计算判别式discriminant的值。 - 判断判别式并计算根:
- 如果
discriminant > 0,则方程有两个实根,使用公式(-b ± √discriminant) / (2a)计算根,并使用printf函数输出结果,保留三位小数。 - 如果
discriminant == 0,则方程有一个实根,使用公式-b / (2a)计算根,并使用printf函数输出结果,保留三位小数。 - 如果
discriminant < 0,则方程无实根,直接使用printf函数输出“无实根”。
- 如果
- 程序结束: 使用
return 0结束程序。
使用说明:
- 将上述代码保存为
quadratic_equation.c文件。 - 使用C语言编译器(如 GCC)编译该文件,例如:
gcc quadratic_equation.c -o quadratic_equation - 运行编译后的可执行文件
quadratic_equation,并在提示输入系数时,输入a、b、c的值,即可计算并输出方程的根。
示例:
例如,输入 1 2 1 表示方程 x^2 + 2x + 1 = 0,则程序输出:
x1=-1.000 x2=-1.000
这表明方程有一个重根 x = -1。
通过本文提供的代码和解释,您可以轻松地用C语言实现一元二次方程求根,并根据判别式的值判断方程是否有实根、是否为重根等情况。
原文地址: https://www.cveoy.top/t/topic/cR6f 著作权归作者所有。请勿转载和采集!