您的位置:首页 > 其它

用else if结构在负数范围内求解一元二次方程的根

2017-06-16 20:51 351 查看
#include <stdio.h>     //标准输入输出头文件    

#include <math.h>      //数学函数的头文件  

/***********主函数main()***********    

函数说明:    

    用else if结构在复数范围内求解一元二次方程的根  

函数功能:    

    实现在复数范围内求解一元二次方程的根  

变量说明:    

    a,b,c为一元二次方程的三个系数    

    p为一元二次方程判别式b*b-4*a*c的结果     

    x1,x2为一元二次方程的两个实根 realpart,imagepart为一元二次方程的实部和虚部  

函数返回值:    

    此处不需要返回值,因此返回值为0.    

***********************************/    

int main()  

{  

    //临时变量,存放输入的系数  

    float a,b,c,p;  

    //临时变量,存放两个实根  

    float x1,x2;  

    //临时变量,存放虚部和实部  

    float realpart,imagepart;  

      

    printf("请输入一元二次方程的系数a,b,c:\n");  

    scanf("%f%f%f",&a,&b,&c);  

    //当a等于0并且b等于0时无解  

    if(0 == a && 0 == b )  

    {  

        printf("无解!");  

    }  

    //当a等于0并且b不等于0时只有一个解  

    else if(0 == a && 0 != b)  

    {  

        printf("方程只有一个解:%.3f\n",-c/b);  

    }  

    else  

    {  

        p = b*b - 4*a*c;  

        realpart = -b/(2*a);  

        imagepart = sqrt(fabs(p)/(2*a));  

        //当判别式p小于0时,有虚数解  

        if(p < 0)  

        {  

            printf("方程有虚数解:\n");  

            printf("%.3f+%.3fi\n",realpart,imagepart);  

            printf("%.3f+%.3fi\n",realpart,imagepart);  

        }  

        //当判别式p大于0时,有实数解  

        else if(p > 0)  

        {  

            x1 = realpart + imagepart;  

            x2 = realpart - imagepart;  

            printf("方程有两个实数解:\n");  

            printf("x1=%.3f\n",x1);  

            printf("x2=%.3f\n",x2);  

        }  

        //当判别式p等于0时,只有一个实数解  

        else  

        {  

            printf("方程只有一个实数解:%.3f\n",realpart);  

        }  

    }  

    return 0;
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: