#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define pi 3.14159265
int main()
{
double x1,y1,x2,y2;
int T;
scanf("%d",&T);
while(T>0){
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
double u = x1*x2+y1*y2;
double mu = sqrt(x1*x1+y1*y1) * sqrt(x2*x2+y2*y2);
printf("%.2lf\n",acos(u/mu)*180/pi);
T--;
}
return 0;
#include<stdlib.h>
#include<math.h>
#define pi 3.14159265
int main()
{
double x1,y1,x2,y2;
int T;
scanf("%d",&T);
while(T>0){
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
double u = x1*x2+y1*y2;
double mu = sqrt(x1*x1+y1*y1) * sqrt(x2*x2+y2*y2);
printf("%.2lf\n",acos(u/mu)*180/pi);
T--;
}
return 0;
}
新知识点:
1.余弦定理中 cosA = (U*V) / (|U|*|V|) //及用向量法,使用向量的乘积除以向量的模
U*V = x1*x2 + y1*y2 |U| = sqrt(x1*x1 + y1*y1) |V| = sqrt(x2*x2 + y2*y2);
2.使用反函数求出来的为弧度,如果我们要转化为度数,那么就要用到以下公式(很好理解,弧度最大为2π,所以用反函数 *180/π 会的到一个大的角度)。注意cosA中的A应该是个弧度——例如求 cos30° = cos(30*180/PI) //PI为π 3.14159
弧度和角度的换算关系如下:
1弧度=180/π度
1度=π/180弧度
也就是说,180度=π 弧度
3.夹角公式 https://baike.baidu.com/item/夹角公式/6773533?fr=aladdin
4.余弦定理
https://baike.baidu.com/item/%E4%BD%99%E5%BC%A6/73670?fr=aladdin&fromid=9602078&fromtitle=%E4%BD%99%E5%BC%A6%E5%87%BD%E6%95%B0