当前位置:网站首页>函数:求方程的根

函数:求方程的根

2022-07-06 09:24:00 |光|

要求

编写程序,求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0,等于0和小于0时的根。

代码

#include<stdio.h>
#include<math.h>
#define EPSILON 1E-6

//计算并输出两个不等实根
void fun1(double a,double b,double c)
{
    
    double x1,x2;
    // 请在下面添加代码
    // ********** Begin ********** 
    int s = b*b-4*a*c;
    if(s>0)
    {
    
        x1 = ((0-b)+sqrt(s))/(2*a);
        x2 = ((0-b)-sqrt(s))/(2*a);
    }

    // ********** End **********
    printf("方程有两个不等实根:%.2f,%.2f\n",x1,x2);

}

//计算并输出两个相等实根
void fun2(double a,double b,double c)
{
    
    double x1,x2;
    // 请在下面添加代码
    // ********** Begin ********** 
     int s = b*b-4*a*c;
    if(s==0)
    {
    
        x1 = (0-b)/(2*a);
        x2 = (0-b)/(2*a);
    }
    // ********** End **********
    printf("方程有两个相等实根:%.2lf,%.2lf\n",x1,x2);

}

//计算并输出两个共轭复根
void fun3(double a,double b,double c)
{
    
    double p,q;
    // 请在下面添加代码
    // ********** Begin ********** 
     int s = b*b-4*a*c;
    if(s<0)
    {
    
        p = (0-b)/(2*a);
        q = sqrt(0-s)/(2*a);
    }

    // ********** End **********
    printf("方程有两个共轭复根:%.2lf+%.2lfi,%.2lf-%.2lfi\n",p,q,p,q);
    
}

//计算方程的根
void fun(double a,double b,double c)
{
    
    double delta=b*b-4*a*c;
    if(fabs(delta)>EPSILON)
    {
    
        if(delta>0)
            fun1(a,b,c);
        else
            fun3(a,b,c);
    }
    else
        fun2(a,b,c);
}

测试

测试输入
3 6 8

输出
方程有两个共轭复根:-1.00+1.29i,-1.00-1.29i

原网站

版权声明
本文为[|光|]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_62757251/article/details/124678802