阅读以下说明和C代码,填补C代码中的空缺,将解答写在答题纸的对应栏内。
【说明】
一元二次方程ax2+ bx+c=0 (a ≠0)的求根公式如下:
设△=b2-4ac,若△大于0,则方程有两个不相等的实数根;若△等于0,则方程有两个相等的实根(即只有一个实根);若△小于0,则方程有两个不相等的复数根,为
下面的C代码根据输入的系数a,b,c求解方程的根,结果保留两位小数,并按照以下要求输出结果:
(1)若方程有两个不相等的实数根,则分两行输出这两个实数根;
(2)若方程只有一个实数根,则输出此根;
(3)若方程有两个不相等的复数根,则按照格式“实部+虚部i”每行输出一个复数根;
(4)若系数都为0,则输出“Zero Equation.";
(5)若系数a、b为0而c不为0,则输出“Not An Equation.”.。
【C代码】
#include <stdio.h>
#include <math.h>
#define eps 0.000006
void solve (double a, double b,double c) ;
int isZero (double x);
int main () {
double a, b, c;
scanf("%lf%lf%lf", &a, &b, &c);
solve (a, b,c);
return 0;
}
int iszero (double x){
return ( (x==0)|| (fabs (x)<eps) ) ;
void solve (double a, double b, double c) {
double delta = b*b-4*a*c ;
if(iszero(a) ) {
if(iszero(b)){
if (isZero(c)) { printf ( "Zero Equation.\n " ) ;return; }
else{printf ( "Not An Equation. \n" ) ; return; }
}
else{ printf("%.2f \n", (1)); return; }
}
else{
double d = sqrt (fabs (delta) ) ;
if((2)){
double rl =(-b+d)/ ( 2*a), r2 =(-b-d)/ (2*a) ;
printf ("%.2f\n%.2f\n", r1, r2) ; return;
}
else {
if ((3)){
double real part =(4);
double img part =(5);
printf ("%.2f+%.2fi \n",real_part, img_part);
printf("%.2f-%.2fi", real_part, img_part); return;
}
else {
printf ( "%.2f",(6));
}
}
}
}