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

来源:互联网 发布:陈一发儿淘宝店倒闭 编辑:程序博客网 时间:2024/06/04 19:23
  1. #include <stdio.h>     //标准输入输出头文件    
  2. #include <math.h>      //数学函数的头文件  
  3. /***********主函数main()***********    
  4. 函数说明:    
  5.     用else if结构在复数范围内求解一元二次方程的根  
  6. 函数功能:    
  7.     实现在复数范围内求解一元二次方程的根  
  8. 变量说明:    
  9.     a,b,c为一元二次方程的三个系数    
  10.     p为一元二次方程判别式b*b-4*a*c的结果     
  11.     x1,x2为一元二次方程的两个实根 realpart,imagepart为一元二次方程的实部和虚部  
  12. 函数返回值:    
  13.     此处不需要返回值,因此返回值为0.    
  14. ***********************************/    
  15. int main()  
  16. {  
  17.     //临时变量,存放输入的系数  
  18.     float a,b,c,p;  
  19.     //临时变量,存放两个实根  
  20.     float x1,x2;  
  21.     //临时变量,存放虚部和实部  
  22.     float realpart,imagepart;  
  23.       
  24.     printf("请输入一元二次方程的系数a,b,c:\n");  
  25.     scanf("%f%f%f",&a,&b,&c);  
  26.     //当a等于0并且b等于0时无解  
  27.     if(0 == a && 0 == b )  
  28.     {  
  29.         printf("无解!");  
  30.     }  
  31.     //当a等于0并且b不等于0时只有一个解  
  32.     else if(0 == a && 0 != b)  
  33.     {  
  34.         printf("方程只有一个解:%.3f\n",-c/b);  
  35.     }  
  36.     else  
  37.     {  
  38.         p = b*b - 4*a*c;  
  39.         realpart = -b/(2*a);  
  40.         imagepart = sqrt(fabs(p)/(2*a));  
  41.         //当判别式p小于0时,有虚数解  
  42.         if(p < 0)  
  43.         {  
  44.             printf("方程有虚数解:\n");  
  45.             printf("%.3f+%.3fi\n",realpart,imagepart);  
  46.             printf("%.3f+%.3fi\n",realpart,imagepart);  
  47.         }  
  48.         //当判别式p大于0时,有实数解  
  49.         else if(p > 0)  
  50.         {  
  51.             x1 = realpart + imagepart;  
  52.             x2 = realpart - imagepart;  
  53.             printf("方程有两个实数解:\n");  
  54.             printf("x1=%.3f\n",x1);  
  55.             printf("x2=%.3f\n",x2);  
  56.         }  
  57.         //当判别式p等于0时,只有一个实数解  
  58.         else  
  59.         {  
  60.             printf("方程只有一个实数解:%.3f\n",realpart);  
  61.         }  
  62.     }  
  63.     return 0;