解题思路:

  
    一元二次方程  ax²+bx+c=0   (a≠0)              
    其求根依据判定式△的取值为三种   ( △=b²-4ac )
     
        1. △>0,方程有两个不相等的实数根;
         
            x1=[-b+√(△)]/2a;   //( △=b²-4ac )
            x2=[-b-√(△)]/2a;
         
        2. △=0,方程有两个相等的实数根;
            x1=x2=[-b+√(△)]/2a= -b/2a ;
         
        3. △<0,方程无实数根,但有2个共轭复根。
            x1=[-b+√(△)*i]/2a;   //( △=b²-4ac )
            x2=[-b-√(△)*i]/2a;


注意事项:

    注意控制格式,保留三位小数输出
    sqrt()开平方函数,参数为正数

参考代码:

#include"stdio.h" 
#include"math.h"   //调用sqrt()开平方函数
 
float x1,x2,a,b,c,z;
  
void func1(){  //大于零 
    x1=( -b+sqrt(z) )/( 2*a );
    x2=( -b-sqrt(z) )/( 2*a );
}
 
void func2(){  //等于零 
    x1=x2=( -b )/( 2*a );
}
 
void func3(){  //小于零 
    int A,B;
    z=sqrt(-z);
    A=-b/(2*a);
    B=z/(2*a);
    printf("x1=%.3f+%.3fi x2=%.3f-%.3fi\n",A,B,A,B);
}
 
int main(){
    scanf("%f%f%f",&a,&b,&c);
    z=b*b-4*a*c;
    if(z>0){
        func1();
    }else if(z<0){
        func3();
        return 0;
    }else{
        func2();
    }
    printf("x1=%.3f x2=%.3f\n",x1,x2);
    return 0;
}


点赞(4)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 4 条评论

与神明说 5年前 回复TA
@lihailong 问题 1028: [编程入门]自定义函数求一元二次方程    题目描述 求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
与神明说 5年前 回复TA
@Katrina 不好意思蛤  确实  疏忽了
Katrina 5年前 回复TA
func3()里面的A,B该用float定义呀
lihailong 6年前 回复TA
题没有说解一元二次方程啊