三个函数对应一元二次的根,求解哪里出错了


#include
#include
    void sum1(float a,float b,float deta) 
{    
    float x1,x2;
    x1=(-b+sqrt(deta))/(2*a);
    x2=(-b-sqrt(deta))/(2*a);
    printf("当deta大于0时有x1=%.f和x2=%.f两个解\n",x1,x2);        
}
    void sum2(float a,float b,float deta)
    {
        float x1,x2;
        x1=-b/(2*a);
        x2=x1;
        printf("当deta等于0时,有一个解%.f",x1);
    }
    void sum3()
    {
        printf("无解\n");
    }
    
main()
{    
    float a,b,c,deta;
    printf("请输入a=\n");
    scanf("%lf",&a);
    printf("请输入b=\n");
    scanf("%lf",&b);
    printf("请输入c=\n");
    scanf("%lf",&c);
    deta=b*b-4*a*c;
    if(deta>0)
    {
        sum1(a,b,deta);
    }
    else if(deta==0)
    {
        sum2(a,b,deta);
    }
    else if(deta<0)
    {
        sum3();
    }
}

把输入中scanf中的%lf改为%f

#include<stdio.h>
#include<math.h>
    void sum1(float a,float b,float deta) 
{    
    float x1,x2;
    x1=(-b+sqrt(deta))/(2*a);
    x2=(-b-sqrt(deta))/(2*a);
    printf("当deta大于0时有x1=%.f和x2=%.f两个解\n",x1,x2);        
}
    void sum2(float a,float b,float deta)
    {
        float x1,x2;
        x1=-b/(2*a);
        x2=x1;
        printf("当deta等于0时,有一个解%.f",x1);
    }
    void sum3()
    {
        printf("无解\n");
    }
main()
{    
    float a,b,c,deta;
    printf("请输入a=\n");
    scanf("%f",&a);
    printf("请输入b=\n");
    scanf("%f",&b);
    printf("请输入c=\n");
    scanf("%f",&c);
    deta=b*b-4*a*c;
    if(deta>0)
    {
        sum1(a,b,deta);
    }
    else if(deta==0)
    {
        sum2(a,b,deta);
    }
    else if(deta<0)
    {
        sum3();
    }
}