求abc边长的时候,如果得到平方的方法不对,系统会报“实数错误”,请注意。
#include <stdio.h>
#include <math.h>
int main()
{
float x1,x2,x3,y1,y2,y3;
float L,A,a,b,c,p;
scanf("%f %f %f %f %f %f",&x1,&y1,&x2,&y2,&x3,&y3);
//确定三边abc边长;
a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); //这里如果用POW((X1-X2),2)这类公式,会出错;
b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)); //可能是用幂指数公式的时候无法保证底数(不等于0)和幂指数符合函数定义;
c=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)); //因此直接乘起得到平方;
//检验是否可以构成三角形,并求面积和周长;
if((a+b>c)&&(a+c)>b&&(b+c>a)){
L=a+b+c;
p=L/2;
A=sqrt(p*(p-a)*(p-b)*(p-c)); //海伦公式求面积
printf("L = %.2f, A = %.2f\n",L,A);
}else{
printf("Impossible\n");
}
return 0;
}