当前位置: 首页 > news >正文

如何判断坐标点所在的象限?

判断象限

任意输入一个点的X坐标和Y坐标,判断它属于哪个象限并输出。

#include <stdio.h>
int main()
{
float x, y;

printf("请输入点的X坐标: \n");
scanf("%f", &x);

printf("请输入点的Y坐标: \n");
scanf("%f", &y);

if (x > 0 && y > 0)
{
printf("该点位于第一象限\n");
} else if (x < 0 && y > 0)
{
printf("该点位于第二象限\n");
} else if (x < 0 && y < 0)
{
printf("该点位于第三象限\n");
} else if (x > 0 && y < 0)
{
printf("该点位于第四象限\n");
} else if (x == 0 && y == 0)
{
printf("该点位于原点\n");
} else if (x == 0)
{
printf("该点位于Y轴上\n");
} else if (y == 0)
{
printf("该点位于X轴上\n");
}

return 0;
}

这段代码实现了一个经典的数学功能:根据输入的平面坐标 (x, y),判断该点在笛卡尔坐标系中的具体位置

它不仅判断四个象限,还非常严谨地处理了边界情况(即点在坐标轴上或原点的情况)。

📜 代码整体结构

  1. 引入头文件#include <stdio.h>,用于输入输出。
  2. 变量定义:使用float类型定义xy,支持小数坐标。
  3. 输入环节:分别提示并读取用户的横纵坐标。
  4. 逻辑判断:使用if-else if阶梯结构,覆盖所有可能的位置情况。
  5. 输出结果:打印对应的象限或轴位置。

🧐 逐行详细解析

1. 变量与输入

  • float x, y;:这里使用了float(浮点型)而不是int。这是一个很好的设计,因为坐标系中的点往往包含小数(例如1.5, -2.3)。
  • scanf("%f", &x);:读取用户输入的浮点数。注意这里必须用%f,如果误用%d会导致数据读取错误。

2. 核心逻辑判断(象限部分)

代码的前四个判断对应数学中的四个象限,逻辑非常清晰:
  • 第一象限if (x > 0 && y > 0)
    • 含义:横坐标和纵坐标同时大于0。
    • 位置:右上角区域。
  • 第二象限else if (x < 0 && y > 0)
    • 含义:横坐标小于0(左),纵坐标大于0(上)。
    • 位置:左上角区域。
  • 第三象限else if (x < 0 && y < 0)
    • 含义:横坐标和纵坐标同时小于0。
    • 位置:左下角区域。
  • 第四象限else if (x > 0 && y < 0)
    • 含义:横坐标大于0(右),纵坐标小于0(下)。
    • 位置:右下角区域。
注意:这里使用了&&(逻辑与)运算符,表示两个条件必须同时满足。

3. 核心逻辑判断(边界部分)

这部分是这段代码的亮点,它没有像简易版程序那样用一个笼统的else来结束,而是细致地处理了坐标轴的情况:
  • 原点else if (x == 0 && y == 0)
    • 只有当 x 和 y为 0 时,点才在原点 (0,0)。
  • Y轴else if (x == 0)
    • 程序运行到这里,说明前面的条件(x>0, x<0, x==0且y==0)都不满足。
    • 此时如果x == 0,那么y一定不等于 0(因为如果 y 也是 0,会被上一句捕获)。
    • 所以,只要 x 是 0 且 y 不是 0,点就在 Y 轴上。
  • X轴else if (y == 0)
    • 同理,运行到这里说明 x 不为 0。
    • 此时如果y == 0,点就在 X 轴上。

💡 逻辑严密性分析

这段代码的逻辑覆盖非常完整,我们可以把它看作一个状态表:

X 的状态Y 的状态代码匹配分支结果
> 0> 0if (x > 0 && y > 0)第一象限
< 0> 0else if (x < 0 && y > 0)第二象限
< 0< 0else if (x < 0 && y < 0)第三象限
> 0< 0else if (x > 0 && y < 0)第四象限
= 0= 0else if (x == 0 && y == 0)原点
= 0≠ 0else if (x == 0)Y 轴上
≠ 0= 0else if (y == 0)X 轴上
http://www.cnnetsun.cn/news/1912925.html

相关文章:

  • [具身智能-372]:动态环境中的主动适应,直面“动态”与“不确定性”。:具身智能与传统机器人的范式跃迁
  • 2026最权威的十大AI写作平台横评
  • PX4飞控固件编译调试避坑实录:从GCC版本冲突到Python模块缺失的完整解决流程
  • 3分钟学会AI音频修复:让模糊录音重获清晰生命的完整指南
  • 大麦网抢票终极指南:3步实现自动化购票系统
  • 多模态视觉-语言-时序融合建模,深度解析沃尔玛中国区销量预测误差下降41%的核心架构,
  • 为什么你的Qwen2-VL在Jetson AGX Orin上跑不出3FPS?——揭秘多模态实时推理中被低估的ViT Patch Embedding内存带宽墙(附NVLink微调参数表)
  • vxe-table编辑保存踩坑记录:为什么你的修改总是自动提交?(含lodash对比技巧)
  • 多模态边缘智能上线前必须完成的6项硬性验证(含跨模态时序对齐误差<8ms、端云协同fallback成功率≥99.997%)
  • 多模态缓存不是“加大内存”就能解决!20年分布式系统老兵拆解:跨模态语义哈希、时序感知驱逐、异构设备亲和性三大硬核突破
  • 多模态大模型容灾为何92%企业踩坑?:从视觉-语音-文本联合失效场景倒推5大备份盲区
  • 生成式AI服务吞吐量骤降47%?(性能瓶颈根因诊断SOP v3.2)
  • 如何利用闭包特性封装一个安全的自增 ID 生成器
  • 计算机毕业设计:Python空气质量与气温智能预测平台 Flask框架 随机森林 K-Means 可视化 数据分析 大数据 机器学习 深度学习(建议收藏)✅
  • 从0到1构建121m纯电动汽车Simulink仿真模型,详细步骤与实际操作文档,带您提升建模能...
  • 【交换技术原理-STP生成树】
  • Go语言如何刷LeetCode_Go语言LeetCode刷题教程【速学】
  • MQTT.fx 2040年激活证书全解析:手把手教你安全配置(附避坑指南)
  • JavaScript typeof, null, 和 undefined
  • 博弈论入门:如何用性别战和斗鸡博弈解决日常决策难题?
  • 如何快速掌握USBCopyer:Windows平台U盘自动备份终极指南
  • Makerbase VESC遥控设置避坑指南:PPM信号范围校准不对?可能是这3个原因
  • 数据清除服务:保护隐私的有效方案,你值得拥有!
  • 别再只盯着PHP了:用Python Flask实战文件上传漏洞与防护(附完整Demo)
  • 太阳能供电选型避坑指南:为什么50W电池板配38AH电池在这个项目中刚好够用?
  • 从Prompt失败到用户留存翻倍,生成式AI UX设计的5个反直觉真相,
  • 网络协议分析与AI预测:使用PyTorch模型进行网络流量异常检测
  • 120吨双级反渗透程序+混床程序,以及阻垢剂、杀菌剂 加药。 一键制水,一键反洗,一键正洗,无人值守
  • 【verilog】深入解析 always 块中 if / if-else 的执行逻辑:硬件并行与软件顺序的微妙平衡
  • OpenAPI 3.0x 解析中的常见错误及解决方案:从格式检测到文档验证