1 #include<math.h> 2 #include<stdio.h> 3 int main() 4 { 5 int i,n,a[110][2]; 6 double s; 7 while(scanf("%d",&n),n) 8 { 9 for(s=i=0;i<n;i++) 10 scanf("%d%d",&a[i][0],&a[i][1]); 11 for(i=2;i<n;i++) 12 s+=(a[i][1]-a[i-1][1])*(a[0][0]-a[i][0]) //注意是有向面积,因为这里WA好多次!! 13 -(a[i][0]-a[i-1][0])*(a[0][1]-a[i][1]); 14 printf("%.1f\n",fabs(s/2));//最后再取正 15 } 16 return 0; 17 } 18 /*本题主要用到数学中的点到直线距离公式及三角形面积公式; 19 把第一个点设为顶点,依次求顶点与各个连续边组成的三角形的有向面积, 20 最后求和再取正即可!*/