#include <cstdio>
#include <cmath>
using namespace std;
int main(){
int i,n;
double x[101],y[101],area=0;
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%lf%lf",&x[i],&y[i]);
for(i=1;i<=n-1;i++)
area+=(x[i+1]-x[i])*(y[i+1]+y[i])/2;
area+=(x[1]-x[n])*(y[n]+y[1])/2;
area=fabs(area);
printf("%.0f",area);
return 0;}
方法二:三角剖分
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
int i,n;
double x[101],y[101],area=0;
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%lf%lf",&x[i],&y[i]);
for(i=2;i<=n-1;i++)
area+=(x[i+1]-x[i])*(y[1]-y[i])-(y[i+1]-y[i])*(x[1]-x[i]);
area=fabs(area)/2;
printf("%.0f",area);
return 0;}
方法三:叉积
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
int i,n;
double x[101],y[101],area=0;
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%lf%lf",&x[i],&y[i]);
for(i=1;i<=n-1;i++)
area+=(x[i]*y[i+1]-x[i+1]*y[i])/2;
area+=(x[n]*y[1]-x[1]*y[n])/2;
area=fabs(area);
printf("%.0f",area);
return 0;}