诶,没钱啊
my time,my chips.
/* 公式: S = 0.5*abs(x1*y2-x2*y1+x2*y3-x3*y2+ ... +xn*y1 - x1*yn) * 思路: 1. 建两个数组, x y 我用malloc()分配内存 * 因为公式最后要乘上第一个点,我就把第一个 * 点复制到最后,这样容易实现 * 2. 顺序输入各个点. * 3, 按公式计算.... */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int *x, *y, sum; int p; // 点的个数 double area; // 面积 int i; sum = 0; area = 0; // 输入点个数,分配内存 printf("请输入点的个数: "); scanf("%d", &p); x = (int *)malloc((p+1) * sizeof *x); // 内存多1, 用来把第一个点复制到最后 y = (int *)malloc((p+1) * sizeof *y); if (x == NULL || y == NULL) { printf("內存分配失败\n"); exit(0); } printf("请按顺序输入各个点:\n"); for (i = 0; i < p; ++i) scanf("%d%d", &x[i], &y[i]); x[i] = x[0]; // 复制第一个点 y[i] = y[0]; // 按公式计算 for (i = 0; i < p; i++) sum += (x[i] * y[i+1] - x[i+1] * y[i]); area = 0.5 * abs(sum); // 如果点是逆时针的会有负值,所以取绝对值 printf("这个%d边形的面积为: %.2f\n", p, area); free(x); free(y); return 0; }这个算法要求点按顺序输入 ,坐等版主的代码学习.