题目
思想
输入a,b,c,按顺序进行分类:
- a b c都是0
- a b 是0,c不是0
- a是0,为一元一次方程
- 是二元一次方程的情况,讨论b*b-4ac。
如果b*b-4ac=0,相同解,分两种情况,解为0和解不为0
如果b*b-4ac>0,分别对两个跟讨论是否为零,分情况输出
如果b*b-4ac<0,讨论实部是否为0,分情况输出
代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
if(a==0&&b==0&&c==0)
printf("Zero Equation");
else if(a==0&&b==0&&c!=0)
printf("Not An Equation");
else if(a==0)
{
double x=-1*c/b;
if(x==0)
printf("0.00");
else
printf("%.2f",x);
}
else
{
double x=b*b-4*a*c;
if(x==0)
{
if(-1*b/(2*a)==0)
printf("0.00");
else
printf("%.2f",-1*b/(2*a));
}
else if(x>0)
{
if((-1*b+sqrt(x))/(2*a)!=0)
printf("%.2f\n",(-1*b+sqrt(x))/(2*a));
else
printf("0.00\n");
if((-1*b-sqrt(x))/(2*a)!=0)
printf("%.2f",(-1*b-sqrt(x))/(2*a));
else
printf("0.00");
}
else if(x<0)
{
x=sqrt(x*-1);
if(-1*b/(2*a)!=0)
{
printf("%.2f+%.2fi\n",-1*b/(2*a),x/(2*a));
printf("%.2f-%.2fi",-1*b/(2*a),x/(2*a));
}
else
{
printf("0.00+%.2fi\n",x/(2*a));
printf("0.00-%.2fi",x/(2*a));
}
}
}
return 0;
}