代码
#include <iostream>
#include <cmath>
using namespace std;
double const PI = 3.1415926;
double cal(double x, double y) {
if(!x) {
return 90;
} else {
if(y>0) {
return atan(y/x)/PI*180;
} else {
return atan(y/x)/PI*180-180;
}
}
}
int main() {
int T;
cin>>T;
for(int i=0; i<T; i++) {
double x1, y1, x2, y2;
cin>>x1>>y1>>x2>>y2;
double k1 = cal(x1, y1);
double k2 = cal(x2, y2);
double ans = abs(k1-k2);
ans = ans>180?360-ans:ans;
printf("%.2lf\n", ans);
}
return 0;
}
注解
1、计算直线斜率。
2、角度制与弧度制转换。
3、要求小于180度的角。
4、atan的使用。