1,导语
对于这种C语言方程问题,稍微接触过C语言都知道,然而老师上课可能是这样子的


然而当你跟着老师打完代码后,在理想状态下你会得到这样

嗯,退坑的心都有了,老实说上课老师讲的我也不懂,但这些东西对于我们小白来说很难一下子汲取到那么多知识,所以我用我的浅薄的知识将代码逐行逐句的解释,并且在后面有知识的总结
2,对应代码
#include <stdio.h>
#include <math.h>//因为后面要引用数学公式,故要利用此头文件
void main()
{
float x1, x2, a, b, c, delta, shibu, xubu;/*定义几个变量为浮点类型,后面的三个分别是德尔塔,实部,虚部*/
printf("请输入三个值作为方程系数:\n");//C语言打印的基本格式printf("xx\n");其中\n为转行
scanf_s("%f,%f,%f", &a, &b, &c);/*C语言中获取外界输入(scanf_s这里的_s因为本人用的是vs内部有些bug所以自加防止报错)*/
if (fabs(a) <= 1e-6)//下文有解释
printf("这不是二次方程\n");
else
{
delta = b * b - 4 * a * c;//德尔塔的数学格式
if (fabs(delta) <= 1e-6)
printf("结果为两个相同的实数根:%8.4f", -b / (2 * a));/*%8.4f意思是打印8个宽度再加4位小数*/
else if (delta > 1e-6)
{
x1 = (-b + sqrt(delta)) / (2 * a);//sqrt的意思为平方根号
x2 = (-b - sqrt(delta)) / (2 * a);
printf("结果有两个不同的实数根:%8.4f and %8.4f\n", x1, x2);
}
else
{
shibu = -b / (2 * a);
xubu = sqrt(-delta) / (2 * a);
printf("结果为两个共轭复根:\n");
printf("%8.4f+%8.4fi\n", shibu,xubu);//复根公式下面会给
printf("%8.4f-%8.4fi\n" ,shibu,xubu);
}
}
}

3,对应公式


4,对应知识点
1,
fabs()函数是返回某一个值的绝对值的一个函数
例如,fabs(a)就是返回a的绝对值
1e-6表示的是浮点数。也就是1*10的-6次方。
而之所以这么写其意义等价于a==0(对于为什么不直接写我的想法是因为引用了math.h的头文件)对此欢迎各位大佬解答
总之这是一个很棒的题,你能学到if语句嵌套,数学公式的使用等等况且这类题很容易变成期末考试的题目,最后让我们一起加油吧
目录
本文详细解析了如何使用C语言求解二次方程,包括方程的各种情况:实根、虚根及重根,并提供了完整的代码示例。





