c语言求解方程,要注意细节,求解

求一元二次方程ax2+bx+c=0的根。

输入格式:
输入三个用空格隔开的实数a、b、c,分别表示一元二次方程的系数,并保证a不为0。

输出格式:
在一行中输出方程的实根,每个根占宽度15,保留5位小数,右对齐,如果有两个相同的实根,只需要输出一个数,如果有两个不同的实根,按从小到大的顺序输出;如果没有实根,请输出字符串“No Answer”。

输入样例:
2 3 -6
结尾无空行
输出样例:
-2.63746

这例子给的不太对吧

#include<stdio.h>
#include<math.h>
int main(){
    double a,b,c,x1,x2,d;
    scanf("%lf %lf %lf",&a,&b,&c);
    d = b*b-4*a*c;
    if(d<0){
        printf("No Answer"); 
    }else if(d==0){
        x1=-b/(2*a);
        printf("%15.5f",x1);
    }else{
        x1=(-b-sqrt(d))/(2*a);
        x2=(-b+sqrt(d))/(2*a);
        printf("%15.5f%15.5f",x1,x2);
    }
    
    return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#define EXP 0.000000000000001
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
    double a = 0.0, b = 0.0, c = 0.0;
    scanf("%lf %lf %lf", &a, &b, &c);
    if ((a > -EXP) && (a < EXP))
    {
        printf("No Answer");
    }
    else
    {
        double disc = b*b - 4 * a*c;
        if ((disc>-EXP) && (disc < EXP))
        {
            printf("%15.5lf", -b / (2 * a));
        }
        else if (disc >= EXP)
        {
            printf("%15.5lf%15.5lf", (-b + disc) / (2 * a), (-b - disc) / (2 * a));
        }
        else
        {
            printf("No Answer");
        }
    }
    return 0;
}
//参考自:https://blog.csdn.net/baidu_39630193/article/details/79675445