关于定于float和double的输出有关问题

关于定于float和double的输出问题
#include<stdio.h>
#include<math.h>
main()
{
  float a,b,c;
 double area,s;
 scnaf("%f %f %f",&a,&b,&c);
 s=(a+b+c)/(1.0/2);
 area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("%lf",area);
 return 0;
}
----------------------------------------------------------------
小弟是新人,在自学的时候遇到了一点问题,为什么谭老师书上,在定义float之后。在程序里面进行赋值,就可以得出正确答案。但是自己输入任意3个值的时候,输出的是(比如说我输入3.0 4.0 5.0的结果是437.629981)

------解决思路----------------------
#include <stdio.h>
#include <math.h>
double Area(float a,float b,float c)
{
double s;
double p;
if (a+b>c&&a+c>b&&b+c>a)    //判断3边是否构成三角形
{
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));   //调用库函数求三角形面积
return s;
}
else 
{
return 0;             //无法构成三角形返回0
}
}
int main(void)
{
float a,b,c;
double ar;
printf("input three numbers: \n");
scanf("%f %f %f",&a,&b,&c);    //输入三角形三边长
ar=Area(a,b,c);
if(ar)
{
printf("area=%f\n",ar);      //输入三角形面积
}
else
{
printf("it is false!");
}
return 0;
}