求方程ax2+bx+c=0的根,用3个函数分别求当:b2-4ac
大于0、等于0和小于0
时的根并输出结果。从主函数输入a,b,c的值。
#include <stdio.h>
#include <math.h>
float disc;//判别式 disc = b^2 - 4ac
float x1,x2;
float p,q; // 俩个虚根
void greater_than_zero(int a,int b);
void equal_to_zero(int a,int b);
void less_than_zero(int a,int b);
int main() {
int a,b,c;
printf("请输入a,b,c的值");
scanf("%d %d %d",&a,&b,&c);
disc = b*b - 4*a*c;//计算判别式
if(disc >0){
greater_than_zero(a,b);
printf("disc>0的俩个根为:x1 = %2f,x2=%2f\n",x1,x2);
}else if(disc == 0){
equal_to_zero(a,b);
printf("disc=0的俩个根为:x1 = %2f,x2=%2f\n",x1,x2);
}else{ // disc<0
less_than_zero(a,b);
printf("disc<0的俩个根为:x1 = %2f,x2=%2f\n",p+q,p-q);
};
return 0;
}
//>0
void greater_than_zero(int a,int b){
//x1 = (-b + sqrt(disc)) / 2a
//x2 = (-b - sqrt(disc)) / 2a
x1 = (-b + sqrt(disc)) / 2*a;
x2 = (-b - sqrt(disc)) / 2*a;
}
//=0
void equal_to_zero(int a,int b){
// x1 = x 2 = -b/2a
x1 = x2 = -b/2*a;
}
//<0
void less_than_zero(int a,int b){
//p = -b/2a
//q = sqrt(-disc) / 2a
p = -b/2*a;
q = sqrt(-disc) / 2*a;
}