题解 | #计算一元二次方程#
计算一元二次方程
http://www.nowcoder.com/practice/7da524bb452441b2af7e64545c38dc26
#include<stdio.h>
#include<math.h>//因为要用到开平方,引入math.h头文件
#define DIS b*b-4*a*c//宏定义一个判别式
int main(void)
{
float a,b,c;
while((scanf("%f %f %f",&a,&b,&c))!=EOF)//多组输入
{
if(0==a)//如果a=0,直接输出
printf("Not quadratic equation");
else//如果a不等于0,分情况讨论
{
float dis=DIS;
if(0==dis)//判别式等于0的情况
{
if(b>0.000001)//要考虑浮点数是有精度的,所以会有+0和-0的情况
printf("x1=x2=%.2f\n",-1*b/(2*a));
else
printf("x1=x2=0.00\n");
}
else if(0<dis)//判别式大于0的情况
{
float dis=sqrt(DIS);
printf("x1=%.2f;x2=%.2f\n",(-1*b-dis)/(2*a),(-1*b+dis)/(2*a));
}
else//判别式小于0的情况
{
float dis=sqrt(-1*(DIS));
if(b<0.000001)//用于判断b为0的情况,因为实部为0不能忽略
printf("x1=0.00%.2fi;x2=0.00+%.2fi\n",(-1*dis)/(2*a),(1*dis)/(2*a));
else
printf("x1=%.2f%.2fi;x2=%.2f+%.2fi\n",(-1*b)/(2*a),(-1*dis)/(2*a),(-1*b)/(2*a),(1*dis)/(2*a));
}
}
}
return 0;
}