首页 软件代码

C语言求二次函数的根


利用给的二次函数的(ax^2+bx+c=0)a,b,c求出二次方程的解。
首先我们要了解到C语言对于小于精度的数会判断为0,例如对float而言如果小于10的负6次方(但是大于0),那么就会判定为是+0(可以判断出符号),例如10^-7在float上就认为是0,那么为了防止出现出现0i的情况,因此在第二个if中对0的定义是绝对值小于10^-6。

#include<stdio.h>
#include<math.h>
void main()
{
    float a,b,c,x1,x2,d;
    printf("请输入二次函数(ax^2+bx+c=0)的a,b,c:\n");
    scanf("%f %f %f",&a,&b,&c);
    d=b*b-4*a*c;
    if(d>0)
    {
        x1=(b*b-sqrt(b))/(2*a);
        x2=(b*b+sqrt(b))/(2*a);
        printf("x1=%4.3f x2=%4.3f",x1,x2);
    }
    else if(abs(d)<1e-6) 
    {
        x1=-b/(2*a);
        printf("x1=%4.3f x2=%4.3f",x1,x1);
    }
    else
    {
        d=-d;
        x1=-b/(2*a);
        x2=sqrt(b);
        printf("x1=%4.3f+%4.3fi x2=%4.3f-%4.3fi",x1,x2,x1,x2);
    }
} 

运行结果:

请输入二次函数(ax^2+bx+c=0)的a,b,c:
1 5 10
x1=-2.500+2.236i x2=-2.500-2.236i




文章评论