使用c语言求一元二次方程的根

时间:2024-12-11 07:15:28

要想使用c语言编写这个实例,就需要知道数学上的公式。

一元二次方程表达式为:a * x * x + bx + c = 0(其中,a ≠ 0)

根的判别式为:Δ = b * b - 4 * a * c;

求根公式为:

 代码思想

手动输入三个系数,分别代表二次项系数、一次项系数、常数项;

判断输入的二次项系数是否为0,如果为0,提示“输入的第一个值不合法,请重新输入!”;

如果二次项系数不为0,利用根的判别式,计算一元二次方程是否有根;

如果判别式 Δ >= 0 ,代表方程有两个根,输出根;

如果 Δ < 0 ,提示“方程无根”。

  1. #include <>
  2. // 使用开根号 sqrt(d) 函数时,需要添加此头文件
  3. #include <>
  4. int main()
  5. {
  6. // 求一元二次方程的根
  7. // 代码思想:
  8. // 手动输入三个系数,分别代表二次项系数、一次项系数、常数项;
  9. // 判断输入的二次项系数是否为0,如果为0,提示“输入的第一个值不合法,请重新输入!”
  10. // 如果二次项系数不为0,利用根的判别式,计算一元二次方程是否有根;
  11. // 如果判别式 Δ >= 0 ,代表方程有两个根,输出根
  12. // 如果 Δ < 0 ,提示“方程无根”。
  13. float a , b , c, d, x1, x2;
  14. printf("请依次输入三个系数: ");
  15. scanf("%f %f %f", &a,&b,&c);
  16. if(a != 0)
  17. {
  18. d = b * b - 4 * a * c; // 根的判别式
  19. if(d >= 0)
  20. {
  21. x1 = ((-b + sqrt(d)) / (2 * a)); // 求根公式
  22. x2 = ((-b - sqrt(d)) / (2 * a));
  23. printf("x1 = %.2f;x2 = %.2f", x1, x2);
  24. }
  25. else
  26. {
  27. printf("方程无根");
  28. }
  29. }
  30. else
  31. {
  32. printf("输入的第一个值不合法,请重新输入!");
  33. }
  34. return 0;
  35. }
例如1:系数 a = 0, b = 2, c = 1 时,运行结果如下

例如2:系数 a = 1, b = 2, c = 1 时,运行结果如下

例如3:系数 a = 1, b = 3, c = 2 时,运行结果如下

例如4:系数 a = 1, b = 0, c = 1 时,运行结果如下