double
不一定是与x y轴平平行
所以要正弦定理和余弦定理
似乎一定要printf输出
错了好几次
#include<iostream> #include<math.h> #include<stdio.h> using namespace std; int main() { int t,ca=1; cin>>t; while(t--) { double x1,y1,x2,y2,x3,y3,x4,y4; cin>>x1>>y1>>x2>>y2>>x3>>y3; x4=x3-x2+x1; y4=y3-y2+y1; double ab,ac,bc,s,a; ab=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); ac=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)); bc=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); a=(ab*ab+bc*bc-ac*ac)/(2*ab*bc); a=acos(a); s=ab*bc*sin(a); printf("Case %d: %.0lf %.0lf %.0lf ",ca++,x4,y4,s); } return 0; }