【题目描述】
平面上有一个三角形,它的三个顶点坐标分别为(x1,y1),(x2,y2),(x3,y3),那么请问这个三角形的面积是多少,精确到小数点后两位。
【输入】
输入仅一行,包括6个双精度浮点数,分别对应x1,y1,x2,y2,x3,y3。
【输出】
输出也是一行,输出三角形的面积,精确到小数点后两位。
【输入样例】
0 0 4 0 0 3
【输出样例】
6.00
【程序分析】
向量叉积公式:

公式推导:
- 将点A(x1,y1)作为基点
- 向量AB = (x2-x1, y2-y1)
- 向量AC = (x3-x1, y3-y1)
- 叉积的绝对值等于以AB、AC为邻边的平行四边形面积
- 三角形面积是平行四边形面积的一半
【程序实现】
#include <stdio.h>
#include <math.h>
int main() {
double x1, y1, x2, y2, x3, y3;
// 读取三个顶点的坐标
scanf("%lf %lf %lf %lf %lf %lf", &x1, &y1, &x2, &y2, &x3, &y3);
// 使用向量叉积公式计算面积
// 面积 = |(x2-x1)(y3-y1) - (x3-x1)(y2-y1)| / 2
double area = fabs((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / 2.0;
printf("%.2lf\n", area);
return 0;
}
147

被折叠的 条评论
为什么被折叠?



