PTA 求一元二次方程的根
#include <stdio.h> #include <math.h> int main() { double a,b,c; scanf("%lf%lf%lf",&a,&b,&c); if(a!=0)//首先考虑a不等于0时,也就是保证方程为一元二次方程 {//a!=0 double p=b*b-4*a*c; if(p>0)//情形1:▲>0 两个不相等的实根 { double x1,x2; x1=(-b+sqrt(p))/(2*a); x2=(-b-sqrt(p))/(2*a); printf("%.2lf\n",x1); printf("%.2lf\n",x2); } else if(p<0)//情形2:▲<0 有两个不相等的复根 { if(b!=0)//非纯虚根 { double real=-b*1.0/(2*a); double imag=sqrt(-p)*1.0/(2*a); printf("%.2lf%+.2lfi\n",real,imag); printf("%.2lf%+.2lfi\n",real,-imag); } else//纯虚根 { double imag=sqrt(-p)*1.0/(2*a); printf("%.2lf%+.2lfi\n",0.0,imag); printf("%.2lf%+.2lfi\n",0.0,-imag); } } else//情形3:▲=0有一个根 此时a!=0 { printf("%.2lf\n",-b*1.0/(2*a)); } } else//a==0,方程化为一元一次方程 { if(b!=0)//情形3:有一个根 此时a!=0 { printf("%.2lf\n",-c*1.0/b); } else { if(c==0) { printf("Zero Equation\n");//情形4 } else { printf("Not An Equation\n");//情形5 } } } return 0; }
注意整体思维去编程,不然容易漏情况
注意空格 字符啥的。。。。因为PAT太过灵敏(就是不太好用哈)。