这道题很水,但要注意不存在时的情况,还有精度问题
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const double eps=1e-8;
const double ep=1e-15;
int main()
{
// freopen("test.txt","r",stdin);
double x1,y1,x2,y2,x3,y3,x4,y4;
double k1,k2,b1,b2;
double x,y;
int T;
scanf("%d",&T);
for(int i=1; i<=T;i++)
{
if(i==1)
printf("INTERSECTING LINES OUTPUT\n");
scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
scanf("%lf %lf %lf %lf",&x3,&y3,&x4,&y4);
if(fabs(x1-x2)>eps && fabs(x3-x4)>eps)
{
k1=(y2-y1)/(x2-x1);
b1=y1-k1*x1;
k2=(y4-y3)/(x4-x3);
b2=y3-k2*x3;
if(fabs(k1-k2)<ep)
{
if(fabs(b1-b2)>eps)
printf("NONE\n");
else
printf("LINE\n");
}
else
{
x=(b2-b1)/(k1-k2);
y=k1*x+b1;
printf("POINT %.2lf %.2lf\n",x,y);
}
}
else if( fabs(x1-x2)<eps && fabs(x3-x4)>eps )
{
k2=(y4-y3)/(x4-x3);
b2=y3-k2*x3;
x=x1;
y=k2*x+b2;
printf("POINT %.2lf %.2lf\n",x,y);
}
else if(fabs(x1-x2)>eps && fabs(x3-x4)<eps)
{
k1=(y2-y1)/(x2-x1);
b1=y1-k1*x1;
x=x3;
y=k1*x+b1;
printf("POINT %.2lf %.2lf\n",x,y);
}
else
{
if( fabs(x1-x3)>eps )
printf("NONE\n");
else
printf("LINE\n");
}
if(i==T)
printf("END OF OUTPUT\n");
}
return 0;
}