这题求的是任意多边形的面积。
(1).用向量叉乘:A(x1,y1), B(x2,y2) , C(x3,y3) . AB(x2-x1,y2-y1),AC(x3-x1,y3-x3) 然后求ABxAC(求AB AC的行列式)然后将结果的绝对值除以2.
求多边形面积不用绝对值。
(2).补充:海伦公式:AB=a BC =b AC=c p=(a+b+c)/2 面积S=sqrt(p*(p-a)*(p-b)*(p-c)).
代码:
#include<stdio.h> #include<math.h> int main() { int n ; int x1,x2,x3,y1,y2,y3 ; while(scanf("%d",&n)!=EOF) { if(n==0) break ; scanf("%d%d%d%d",&x1,&y1,&x2,&y2) ; double sum=0 ; for(int i=2;i<n;i++) { scanf("%d%d",&x3,&y3); sum=(x2-x1)*(y3-y1)-(y2-y1)*(x3-x1); printf("%.1lf\n",sum) ; x2=x3 ; y2=y3 ; } printf("%.1lf\n",sum/2.0) ; } return 0 ; }