求解一元二次方程

 
Grade: 15 / Discount: 0.8

初中的时候我们就会求解一元二次方程了,下面让我们来教计算机如何求解。输入 a,b,c ,就一元二次方程 ax²+bx+c=0 的根。

输入:
假设 a,b,c均int。

输出:
要求输出的根为 double 型,保留 6 位小数。

 

#include <stdio.h> 
#include <math.h>   
  
main()   
{   int a,b,c;   
    double xi,xii,dx; 
     scanf("%d %d %d",&a,&b,&c);   
     dx=b*b-4*a*c;   
 if (a==0 && b==0) 
      printf("Input error!\n");   
 else 
      if (a==0) 
         {  if (c==0) 
                 printf("x=0.000000\n");   
            else 
                  printf("x=%.6f\n",-1.0*c/b);   
            }   
      else 
             if (dx==0) 
           {    if (b==0) 
                   printf("x1=x2=0.000000");   
             else 
                    printf("x1=x2=%.6f\n",-1.0*b/2/a);   
             }   
           else 
                 if (dx>0) {   
                  xi=(-b+sqrt(dx))/2/a;   
                  xii=(-b-sqrt(dx))/2/a;  /*if (xi<xii) {dx=xi;xi=xii;xii=dx;}*/ 
                    
                  printf("x1=%.6f\nx2=%.6f\n",xi,xii);   
                  }   
                else 
              if (b==0) 
                        printf("x1=%.6fi\nx2=%.6fi\n",sqrt(-dx)/2/a,-sqrt(-dx)/2/a);   
               else
                    printf("x1=%.6f+%.6fi\nx2=%.6f-%.6fi\n",-1.0*b/2/a,sqrt(-dx)/2/a,-1.0*b/a/2,sqrt(-dx)/a/2);   
  
}


 

你可能感兴趣的:(c,input,math.h)