已知三角形三边求三角形的面积

为什么我输入 3 4 5 会显示-1.#IND00
应该如何修改?

#include
#include
#define p ((a+b+c)/2)
#define q (p*(p-a)*(p-b)*(p-c))
float S(float a,float b,float c)
{
    float s=0;
    s=sqrt(q);
    return s;
}
int main()
{
    float a,b,c;
    scanf("%lf %lf %lf",&a,&b,&c);
    printf("%lf\n",S(a,b,c));
    return 0;
}

见注释,供参考:

#include<stdio.h>
#include<math.h>
#define p (((a)+(b)+(c))/2.0)     //修改
#define q ((p)*((p)-a)*((p)-b)*((p)-c))//修改
float S(float a,float b,float c)
{
    float s=0;
    s=sqrt(q);
    return s;
}
int main()
{
    float a,b,c;
    scanf("%f %f %f",&a,&b,&c);  //修改
    //scanf("%lf %lf %lf",&a,&b,&c);
    printf("%f\n",S(a,b,c));     //修改
    // printf("%lf\n",S(a,b,c));
    return 0;
}