ac代码如下
这题中的任意多边形包括凹凸多边形,只需要记住其公式即可
面积为 第一个点与第二个点 第二个点与第三个点 一直到第n个点与第一个点的 叉乘 的和。
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
int main()
{
int i,n,x[101],y[101];
while(~scanf("%d",&n)&&n)
{
for(i=1;i<=n;i++)
{
scanf("%d%d",x+i,y+i);
}
double ans=0;
for(i=1;i<=n;i++)
{
if(i==n) ans+=x[n]*y[1]-y[n]*x[1];
else
{
ans+=x[i]*y[i+1]-y[i]*x[i+1];
}
}
printf("%.1lf\n",ans/2.0);
}
return 0;
}
{
int i,n,x[101],y[101];
while(~scanf("%d",&n)&&n)
{
for(i=1;i<=n;i++)
{
scanf("%d%d",x+i,y+i);
}
double ans=0;
for(i=1;i<=n;i++)
{
if(i==n) ans+=x[n]*y[1]-y[n]*x[1];
else
{
ans+=x[i]*y[i+1]-y[i]*x[i+1];
}
}
printf("%.1lf\n",ans/2.0);
}
return 0;
}