#include<math.h>
main()
{
double a,b,c
double s,area,d
printf("Enter three number a,b,c.")
scanf("%f%f%",&a,&b,&c) //请改为scanf("%lf%lf%lf",&a,&b,&c)
s=(a+b+c)/2
d=s*(s-a)*(s-b)*(s-c)
if((a>=c+b)||(b>=a+c)||(c>=a+b))printf("error")
else
{
area=sqrt(d)
printf("The area is %f\n",area)//请改为 printf("The area is %lf\n",area)
}
return
}
三角形半周长一定大于每条边。所以中间一步判断正负的可以省掉。其实应该加上这样一步判断:
#include<stdio.h>
#include<math.h>
void main()
{float a,b,c,s,area,x
printf("Please input three numbers:")
scanf("%f,%f,%f",&a,&b,&c)
if ((a+b>c) &&(a+c>b) &&(b+c>a)) {
s=(a+b+c)/2.0
x=(s*(s-a)*(s-b)*(s-c))
area=sqrt(x)
printf("area=%6.2f\n",area)
}
else
printf("Input error!" )
}