C语言:求解一元二次方程(含虚根处理)
C语言:求解一元二次方程(含虚根处理)
这篇文章展示了一个用C语言编写的程序,用于求解一元二次方程,并修复了原程序在计算虚根时存在的错误。
以下是修正后的代码:
#include <stdio.h>
#include <math.h>
int main(){
float a, b, c, x1, x2, d, t;
scanf('%f %f %f', &a, &b, &c);
d = b * b - 4 * a * c;
if (d > 0) {
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
printf('x1=%.5f x2=%.5f', x1, x2);
}
else if (d == 0) {
x1 = -b / (2 * a);
printf('x1=x2=%.5f', x1);
}
else {
x1 = -b / (2 * a);
t = sqrt(-d)/(2*a);
printf('x1=%.5f+%.5fi x2=%.5f-%.5fi', x1, t, x1, t);
}
return 0;
}
代码解释:
- 包含头文件:
stdio.h用于输入输出操作,math.h用于数学函数,例如sqrt()用于计算平方根。 - 定义变量:
a、b、c分别存储一元二次方程的系数,x1、x2存储方程的根,d存储判别式,t存储虚根的虚部。 - 获取输入: 使用
scanf()函数获取用户输入的三个系数。 - 计算判别式:
d = b * b - 4 * a * c计算判别式的值。 - 判断根的情况:
- 如果
d > 0,方程有两个不相等的实根,使用求根公式计算并输出。 - 如果
d == 0,方程有两个相等的实根,使用求根公式计算并输出。 - 如果
d < 0,方程有两个共轭复根,计算实部和虚部并输出。
- 如果
- 输出结果: 使用
printf()函数输出计算得到的根。
注意:
- 在计算虚根时,我们只需要输出其中一个虚根的实部和虚部,因为另一个虚根与其共轭。
- 代码中使用
%.5f控制输出结果保留五位小数。
希望这段代码和解释能够帮助你理解如何用 C 语言求解一元二次方程,并处理虚根的情况。
原文地址: http://www.cveoy.top/t/topic/oAa 著作权归作者所有。请勿转载和采集!