题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2080
image.png
思路:1.需要求角度->需要知道这个角的正弦余弦或正切值
问题:如何求正弦余弦正切
条件:包括原点有三个点->能连成三条线->能知道三条线的长度
结论:根据高中的正余弦定理,即可求出正弦余弦值,通过反三角函数即可求出角度。
需要额外知识:反三角函数【acos()】,由于acos()返回的是弧度制,还需要将其乘以180再除以3.14.
代码如下:
#include<stdio.h>
#include<math.h>
int main(void)
{
int t,i;
double x1, y1, x2, y2;
double a, b,c,temp,cos;
while (scanf("%d", &t) != EOF)
{
getchar();
for (i = 0; i < t; i++)
{
scanf("%lf %lf %lf %lf", &x1,&y1,&x2,&y2);
a = sqrt(x1*x1 + y1 * y1);
b= sqrt(x2*x2 + y2 * y2);
c= sqrt((x2-x1)*(x2 - x1) + (y2-y1) * (y2 - y1));
cos = (a*a + b * b - c * c) / (2 * a*b);
printf("%.2lf\n", acos(cos)*180.0 / 3.1416);
}
}
}