程序填空题:结构体成员使用
在学习了用结构体的方式表示点和矩形之后,你一定会完成一个判断给定点是否在给定矩形中的操作。
### 输入格式:
输入两行,第一行输入两个整数,由空格分隔,分别表示点的横坐标和纵坐标;
第二行输入四个整数,任意两个整数之间用一个空格分隔,分别表示矩形某一条对角线上的两个顶点,前两个整数表示其中一个顶点的横坐标和纵坐标;后两个整数表示另一个顶点的横坐标和纵坐标。
题目保证所有输入的整数都大于等于 -1000并且小于等于 1000。矩形的横向边平行于 x 轴,纵向边平行于 y 轴,且面积一定大于 0。
### 输出格式:
输出为一行,如果给出的点在给出的矩形内或矩形边上,则输出YES,如果给出的点在给出的点在给出的矩形外,则输出NO。
### 输入样例1:
1 4
0 0 5 5
### 输出样例1:
YES
### 输入样例2:
1 4
3 3 0 0
### 输出样例2:
NO
思路:只要给定点在矩阵两个横坐标之间和两个纵坐标之间,则在该矩阵内。
c++
#include <stdio.h>
#include <math.h>
struct point {
int x;
int y;
};
typedef struct rectangle{
struct point p1;
struct point p2;
}rectangle;
void swap(int *,int *);
int main() {
struct point p;
rectangle r;
scanf("%d%d",@@[&p.x](1),&p.y);
scanf("%d%d%d%d",@@[&r.p1.x](1),&r.p1.y,&r.p2.x,&r.p2.y);
if(r.p1.x>r.p2.x)
{
swap(@@[&r.p1.x,&r.p2.x](1));//让r.p1.x值小于等于r.p2.x
}
if(r.p1.y>r.p2.y)
{
swap(@@[&r.p1.y,&r.p2.y](1));//让r.p1.y值小于等于r.p2.y
}
if(@@[(r.p1.x<=p.x&&p.x<=r.p2.x)&&(r.p1.y<=p.y&&p.y<=r.p2.y)](1))
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
void swap(int *a,int *b){
@@[ int t;](1)
t=*a;
*a=*b;
*b=t;
}
答案:
第1空:&p.x
第2空:&r.p1.x
第3空:&r.p1.x,&r.p2.x
第4空:&r.p1.y,&r.p2.y
第5空:(r.p1.x<=p.x&&p.x<=r.p2.x)&&(r.p1.y<=p.y&&p.y<=r.p2.y)
第6空: int t;
### 输入格式:
输入两行,第一行输入两个整数,由空格分隔,分别表示点的横坐标和纵坐标;
第二行输入四个整数,任意两个整数之间用一个空格分隔,分别表示矩形某一条对角线上的两个顶点,前两个整数表示其中一个顶点的横坐标和纵坐标;后两个整数表示另一个顶点的横坐标和纵坐标。
题目保证所有输入的整数都大于等于 -1000并且小于等于 1000。矩形的横向边平行于 x 轴,纵向边平行于 y 轴,且面积一定大于 0。
### 输出格式:
输出为一行,如果给出的点在给出的矩形内或矩形边上,则输出YES,如果给出的点在给出的点在给出的矩形外,则输出NO。
### 输入样例1:
1 4
0 0 5 5
### 输出样例1:
YES
### 输入样例2:
1 4
3 3 0 0
### 输出样例2:
NO
思路:只要给定点在矩阵两个横坐标之间和两个纵坐标之间,则在该矩阵内。
c++
#include <stdio.h>
#include <math.h>
struct point {
int x;
int y;
};
typedef struct rectangle{
struct point p1;
struct point p2;
}rectangle;
void swap(int *,int *);
int main() {
struct point p;
rectangle r;
scanf("%d%d",@@[&p.x](1),&p.y);
scanf("%d%d%d%d",@@[&r.p1.x](1),&r.p1.y,&r.p2.x,&r.p2.y);
if(r.p1.x>r.p2.x)
{
swap(@@[&r.p1.x,&r.p2.x](1));//让r.p1.x值小于等于r.p2.x
}
if(r.p1.y>r.p2.y)
{
swap(@@[&r.p1.y,&r.p2.y](1));//让r.p1.y值小于等于r.p2.y
}
if(@@[(r.p1.x<=p.x&&p.x<=r.p2.x)&&(r.p1.y<=p.y&&p.y<=r.p2.y)](1))
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
void swap(int *a,int *b){
@@[ int t;](1)
t=*a;
*a=*b;
*b=t;
}
答案:
第1空:&p.x
第2空:&r.p1.x
第3空:&r.p1.x,&r.p2.x
第4空:&r.p1.y,&r.p2.y
第5空:(r.p1.x<=p.x&&p.x<=r.p2.x)&&(r.p1.y<=p.y&&p.y<=r.p2.y)
第6空: int t;