如何用C语言编写程序求解二次方程的根?


问题

应用软件开发方法来解决C语言中的任何问题。

解决方案

  • 求解二次方程 ax2+bx+c 的根。
  • 给定的二次方程将有两个根。

分析

输入 − a、b、c 值

输出 − r1、r2 值

步骤

$r_{1}=\frac{-b+\sqrt{b^2-4ac}}{2a}$

$r_{2}=\frac{-b-\sqrt{b^2-4ac}}{2a}$

设计(算法)

  • 开始
  • 读取 a、b、c 值
  • 计算 d = b2 - 4ac
  • 如果 d > 0,则
    • r1 = (-b + sqrt(d)) / (2*a)
    • r2 = (-b - sqrt(d)) / (2*a)
  • 否则,如果 d = 0,则
    • 计算 r1 = -b/(2a), r2 = -b/(2a)
    • 打印 r1、r2 值
  • 否则,如果 d < 0,则打印根是虚数
  • 结束

代码实现

# include<stdio.h>
# include<math.h>

int main () {
    float a,b,c,r1,r2,d;
    
    printf ("Enter the values of a b c: ");
    scanf (" %f %f %f", &a, &b, &c);
    
    d= b*b - 4*a*c;
    
    if (d>0) {
        r1 = -b+sqrt (d) / (2*a);
        r2 = -b-sqrt (d) / (2*a);
        printf ("The real roots = %f %f", r1, r2);
    }
    else if (d==0) {
        r1 = -b/(2*a);
        r2 = -b/(2*a);
        printf ("Roots are equal =%f %f", r1, r2);
    }
    else
        printf("Roots are imaginary");
    
    return 0;
}

测试

Case 1:
Enter the values of a b c: 1 4 3
The real roots = -3.000000 -5.000000
Case 2:
Enter the values of a b c: 1 2 1
Roots are equal =-1.000000 -1.000000
Case 3:
Enter the values of a b c: 1 1 4
Roots are imaginary

更新于:2023年9月1日

13.3万+ 浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.