【题目来源】
https://www.acwing.com/problem/content/664/
【题目描述】
给定两个保留一位小数的浮点数 X,Y,用来表示一个点的横纵坐标。
请你判断该点在坐标系中的位置。
【输入格式】
共一行,包含两个浮点数 X,Y,表示点的横纵坐标。
【输出格式】
如果点在第一象限,则输出 Q1,在第二象限,则输出 Q2,以此类推。
如果点在原点处,则输出 Origem。
否则,如果点在 x 坐标上,则输出 Eixo X,在 y 坐标上,则输出 Eixo Y。
【数据范围】
−10.0≤X,Y≤10.0
【输入样例1】
4.5 -2.2
【输出样例1】
Q4
【输入样例2】
0.0 0.0
【输出样例2】
Origem
【算法分析】
◆ 当点不是原点时,判断点在 X 轴的条件为 p.y==0,判断点在 Y 轴的条件为 p.x==0。
【算法代码一:结构体】
#include <bits/stdc++.h>
using namespace std;
struct Point{
float x;
float y;
}p;
int main() {
cin>>p.x>>p.y;
if(p.x==0 && p.y==0) cout<<"Origem"<<endl;
else if(p.y==0) cout<<"Eixo X"<<endl;
else if(p.x==0) cout<<"Eixo Y"<<endl;
else if(p.x>0 && p.y>0) cout<<"Q1"<<endl;
else if(p.x<0 && p.y>0) cout<<"Q2"<<endl;
else if(p.x<0 && p.y<0) cout<<"Q3"<<endl;
else if(p.x>0 && p.y<0) cout<<"Q4"<<endl;
return 0;
}
/*
in:
0.0 -1.7
out:
Eixo Y
*/
【算法代码二:三目运算符】
#include <bits/stdc++.h>
using namespace std;
int main() {
float x,y;
cin>>x>>y;
if(x==0 && y==0) cout<<"Origem";
else if(x*y==0) cout<<(x==0?"Eixo Y":"Eixo X");
else if(x>0) cout<<(y>0?"Q1":"Q4");
else cout<<(y>0?"Q2":"Q3");
}
/*
in:
0.0 -1.7
out:
Eixo Y
*/
【参考文献】
https://www.acwing.com/solution/content/254897/
https://www.acwing.com/solution/content/12396/