#include <stdio.h> int main() { float x1,y1,x2,y2,x3,y3,x4,y4; float k1,k2,b1,b2; //k斜率 b截距 while(scanf("%f%f%f%f",&x1,&y1,&x2,&y2)!=EOF) { getchar(); //getchar()换行 scanf("%f%f%f%f",&x3,&y3,&x4,&y4); if(x1==x2&&x3==x4) //重点: ****因为垂直直线的斜率是无穷大的 所以要拎出来单独讨论****【1】 { if(x2==x3) //如果四个横坐标都相等则说明两条线重合即相交 { printf("Yes\n"); } else //横坐标两两相等则说明平行不想交 printf("No\n"); } else { k1=(y2-y1)/(x2-x1); // 分别求两条直线的斜率 【2】 k2=(y4-y3)/(x4-x3); b1=y1-k1*x1; //再求两条直线的截距 b2=y3-k2*x3; if(k1==k2) { if(b1!=b2) printf("No\n"); else printf("Yes\n"); //**斜率相等且截距相同则说明重合相交** } else printf("Yes\n"); // **斜率不同的两条直线必然是相交的** } } return 0; } |
Double click to view unformatted code.