求一元二次方程的根

c语言实现求一元二次方程的根

从键盘上任意输入 a,b,c 的值,编程计算并输出一元二次方程 ax2+bx+c=0 的根
当 a=0 时,输出“Not quadratic equation with one unknown!”; 当 a≠0 时,分 b2-4ac>0 ,b2-4ac=0 ,b2-4ac<0 三种情况计算并输出方程的根。当 b2-4ac<0 时,输出“No real roots”,若有两根,按从小到大顺序输出,结果保留3位小数,若只有一个根,则输出一个即可。

注意:浮点数不能和0比较是否相等,本题 |a| <0.000001时视为0
输入
a,b,c
输出
x1,x2
代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
    float a,b,c,d,x1,x2;
    scanf("%f,%f,%f",&a,&b,&c);
    d=b*b-4*a*c;
    if((fabs)(a)<0.000001)
    {
        printf("Not quadratic equation with one unknown!");
    }
    else
    {
        if(d<=-0.000001)
        {
            printf("No real roots");
        }    
        else
        {
            if(d>=0.000001)
            {
                x1=(double)((-b+sqrt(d))/(2*a));
                x2=(double)((-b-sqrt(d))/(2*a));
                if(x1>x2)
                {
                    printf("%.3f,%.3f",x2,x1);
                }
                else
                {
                    printf("%.3f,%.3f",x1,x2);
                }
            }
            else
            {
                x1=-b/(2*a);
                printf("%.3f",x1);
            }
            
        }
        
    }
        
}

此题难度不大,关键是要注意浮点数和0的比较问题。

上一篇:格式化输出


下一篇:LOJ6538 烷基计数