LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
矩形的边框
Zeiod 2022-08-22

用下面的数据类型分别表示点和矩形:

struct POINT { //点

int x, y; //坐标值x和y

};

struct RECT { //矩形

POINT lt, rb; //矩形的左上角和右下角

};    

输入矩形两个点的坐标值x和y,再输入第3个点的坐标,判断第3个点是否在矩形的边框上。

输入格式:第一行输入左上角坐标

                 第二行输入右下角坐标

                 第三行输入第三个点的坐标

                 输入整型,空格分隔。

输出格式:输出YES或者NO

输入:-20 20

              20 -10

              20 10

输出:YES

备注:矩形平行于x、y轴

思路:如果一个点在矩形边框上,那么这个点那么在竖着的两条边上,要么在横着的两条边上。

那么在这竖着或横着的边上条件是什么呢:

1.如果在横着的边上,也就是这个点的y坐标等于横线两端点的y坐标,且x坐标在两端点x坐标之间。

2.如果在竖着的边上,也就是这个点的x坐标等于横线两端点的x坐标,且y坐标在两端点y坐标之间。

代码:

#include<stdio.h>

struct POINT

{

    int x,y;

};

struct RECT

{

    struct POINT lt,rb;

};

int main()

{

    struct RECT rect;

    struct POINT point;

    scanf("%d %d",&(rect.lt.x),&(rect.lt.y));

    scanf("%d %d",&(rect.rb.x),&(rect.rb.y));

    scanf("%d %d",&(point.x),&(point.y));

    //点在两条竖线上 

    if((point.x==rect.lt.x||point.x==rect.rb.x)&&

    (point.y<=rect.lt.y&&point.y>=rect.rb.y))

    {

        printf("YES");

        return 0;

    }

    //点在两条横线上 

    if((point.y==rect.lt.y||point.y==rect.rb.y)&&

    (point.x<=rect.lt.x&&point.x>=rect.rb.x))

    {

        printf("YES");

        return 0;

    }

    printf("NO");

    return 0;

}

结果:




推荐文章
评论(0)
分享到
转载我的主页