PTA 求一元二次方程的根

C语言——PTA 求一元二次方程的根_#include

#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太过灵敏(就是不太好用哈)。