题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=67
http://acm.nyist.net/JudgeOnline/problem.php?pid=68
题目分析:三角形的面积其实就是三个点组成的两个向量的叉乘的绝对值。因为如果三个点以顺时针方向给出,那么求出来就是正的,如果是逆时针就是负的。为什么呢。因为叉乘有方向性,满足右手定律。
67题的代码:
68题的代码:#include<stdio.h> #include<math.h> int main() { int a[6]; double area; while(scanf("%d %d %d %d %d %d",&a[0], &a[1], &a[2], &a[3], &a[4], &a[5])) { if(!a[0] && !a[1] && !a[2] && !a[3] && !a[4] && !a[5]) break; area = ((a[2] - a[0]) * (a[3] - a[5]) - (a[2] - a[4]) * (a[3] - a[1])) / 2.0; printf("%.1lf\n",fabs(area)); } return 0; }
另外,作为这两道题的延生,参看:http://blog.csdn.net/kay_zhyu/article/details/8805631#include<stdio.h> int main() { int a[6]; double area; while(scanf("%d %d %d %d %d %d",&a[0], &a[1], &a[2], &a[3], &a[4], &a[5])) { if(!a[0] && !a[1] && !a[2] && !a[3] && !a[4] && !a[5]) break; area = ((a[2] - a[0]) * (a[3] - a[5]) - (a[2] - a[4]) * (a[3] - a[1])); if(area > 0.0) printf("1\n"); else printf("0\n"); } return 0; }