诶,没钱啊

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;
}
这个算法要求点按顺序输入 ,坐等版主的代码学习.