C语言程序 判断P1和P2位于这条直线的同一边,输出YES,否则输出NO 提交为WA

图片说明

#include
int main()
{
int x1,x2,y1,y2;
int a,b,c;
int x3,x4,y3,y4,c1,c2;
scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);

a=y2-y1;
b=x1-x2;
c=x1*y2-y1*x2;
c1=a*x3+b*y3;
c2=a*x4+b*y4;

if(c1>=c && c2>=c)

    printf("YES");
else if(c1<c && c2<c)
    printf("YES");
else 
    printf("NO");

return 0;

}

#include
int main()
{
int x1,x2,y1,y2;
int a,b,c;
int x3,x4,y3,y4,c1,c2;
scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);

a=y2-y1;
b=x1-x2;
c=x1*y2-y1*x2;
c1=a*x3+b*y3;
c2=a*x4+b*y4;

if(c1>c && c2>c)
printf("YES");
else if(c1<c && c2<c)
printf("YES");
else
printf("NO");
return 0;
}
应该没有错,你那个也可怡运行吧,哪里错你都没有描述

你这是提问还是自问自答呀

我做了一下

#include <stdio.h>

typedef struct point {
    int x;
    int y;
} point;

int main() {
    printf("Hello, World!\n");
    point p[4];
    for (int i = 0; i < 4; ++i) {
        scanf("%d%d", &p[i].x, &p[i].y);
    }
    int a = p[0].y - p[1].y;
    int b = p[0].x - p[1].x;
    int c = p[0].x * p[1].y - p[1].x * p[0].y;
    int c1 = a * p[2].x + b * p[2].y - c;
    int c2 = a * p[3].x + b * p[3].y - c;
    if (c1 * c2 >= 0) {
        printf("YES");
    } else {
        printf("NO");
    }
    return 0;
}

图片说明
图片说明
图片说明