首页 > 题库 > 职业考证 > 软考 > 程序员 > 案例题

阅读以下说明和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));
      }
    }
  }
}



参考答案: 查看答案 查看解析 查看视频解析 下载APP畅快刷题

相关知识点试题

相关试卷