解题思路:写三个函数输出大于0,小于0和等于0的情况,为了简化代码可以不需要返回值,直接输出就行。

一元二次方程的概念如下:

一般式:ax²+bx+c=0(a≠0)。

求根公式:

利用一元二次方程根的判别式可以判断方程的根的情况
▲ = b² - 4ac

一元二次方程的根与根的判别式 有如下关系:
① 当 ▲ > 0 时,方程有两个不相等的实数根;
② 当 ▲ = 0 时,方程有两个相等的实数根;
③ 当 ▲ < 0 时,方程无实数根,但有2个共轭复根。



注意事项:注意函数b^2-4ac小于0的其情况,可以分成两部分输出,其他函数正常输出。

参考代码:

#include<stdio.h>

#include<math.h>

void outo(double a,double b,double c);  //写出三个函数不同功能  ▲ > 0 

void lowo(double a,double b,double c);  //▲ < 0 

void equalo(double a,double b,double c);  //▲ = 0 

int main(){

double a,b,c;

scanf("%lf%lf%lf",&a,&b,&c);

if(b*b-4*a*c>0){   //利用if语句判断▲的大小 

    outo(a,b,c);    //对写好的函数进行调用,直接输出对应的值

}

else if(b*b-4*a*c<0){ 

    lowo(a,b,c);

}

else{

equalo(a,b,c);

}

return 0;

}

void outo(double a,double b,double c){

double x1,x2;

x1=(sqrt(b*b-4.0*a*c))/2.0*a-b/(2.0*a);

x2=-(sqrt(b*b-4.0*a*c))/2.0*a-b/(2.0*a);

printf("x1=%.3lf x2=%.3lf",x1,x2);

}

void lowo(double a,double b,double c){

double x1,x2,x11;

x1=(sqrt(4*a*c-b*b))/(2.0*a);

x11=b/(2.0*a);  //为了便于理解可以用另一个变量分出求根公式的后半部分

x2=(sqrt(4*a*c-b*b))/(2.0*a);

printf("x1=-%.3lf+%0.3lfi x2=-%.3lf-%0.3lfi",x11,x1,x11,x2);  //按照特定的方式输出,其他函数正常输出。

}

void equalo(double a,double b,double c){

double x1,x2;

x1=-b/2.0*a;

    x2=x1;

    printf("x1=%.3lf x2=%.3lf",x1,x2);

}


慢慢理解题目,尝试用函数编写会更加方便,易于理解哦!



 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区