题意:判断两直线相交情况,模板题代码:#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> using namespace std; struct Point { double x,y; }; const double eps = 1E-6; int sig(double d) { return (d > eps) - (d < -eps); } double Cross(const Point& o,const Point& a,const Point& b) { return (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x); } int LineCross(const Point& a,const Point&b,const Point& c ,const Point& d,Point &p) { double s1,s2; s1 = Cross(a,b,c); s2 = Cross(a,b,d); if(sig(s1)==0&&sig(s2)==0) return 2; if(sig(s2-s1)==0) return 0; p.x = (c.x * s2 - d.x * s1)/(s2 - s1); p.y = (c.y * s2 - d.y * s1)/(s2 - s1); return 1; } Point a,b,c,d,point; int main(){ int n; cin >> n; cout << "INTERSECTING LINES OUTPUT" << endl; while(n--) { cin >> a.x >> a.y >> b.x >> b.y >> c.x >> c.y >> d.x >> d.y; int k = LineCross(a,b,c,d,point); if(k == 2) cout << "LINE" << endl; else if(k == 0) cout << "NONE" << endl; else{ printf("POINT %.2f %.2f/n",point.x,point.y); } } cout << "END OF OUTPUT" << endl; return 0; }