You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言判断点是否在矩形内的代码运行错误排查求助

C语言判断点在矩形内代码问题修正

存在的问题

  • 返回值逻辑与变量初始化问题:你用未初始化的char类型变量D作为判定标识,不管是main函数里的判断条件h == D,还是dentroRetangulo函数里返回的D都是随机垃圾值,完全无法作为判定依据。建议直接用int类型的0/1作为返回值,1表示在矩形内,0表示不在,实现更简单也不会出初始化问题。
  • 判定逻辑错误:你当前写的x>v1x && x<v2x || y> v1y && y<v2y是“x在区间内 或者 y在区间内”,完全不符合矩形判定逻辑,正确逻辑是x和y必须同时在对应区间内,要把||改成&&。如果需要包含矩形边界,需要把</>改成<=/>=。
  • 变量使用不匹配:你输入的待检测点坐标存在变量f、g中,但输出的时候用的是未赋值的x、y,会输出乱码。
  • 函数分支返回缺失:dentroRetangulo函数只有if条件成立时有返回值,条件不成立时没有返回内容,属于未定义行为。
  • 结果输出不完整:当前代码只写了点在矩形内的输出逻辑,点不在矩形内的场景没有任何提示,用户无法得到判定结果。

修正后的完整代码

#include <stdio.h>
// 返回1表示点在矩形内,返回0表示不在
int dentroRetangulo(int v1x, int v1y, int v2x, int v2y, int x, int y);
int main()
{
    int left_x, left_y, right_x, right_y, point_x, point_y;
    int result;
    
    printf("== 矩形坐标输入 ==\n");
    printf("请输入左下角坐标:\n");
    scanf("%d %d", &left_x, &left_y);
    printf("请输入右上角坐标:\n");
    scanf("%d %d", &right_x, &right_y);
    printf("=== 待检测点输入 ===\n");
    printf("请输入待检测点的坐标(x,y):\n");
    scanf("%d %d", &point_x, &point_y);
    
    result = dentroRetangulo(left_x, left_y, right_x, right_y, point_x, point_y);
    
    if(result == 1)
    {
        printf("点(%d, %d)在矩形范围内", point_x, point_y);
    }
    else
    {
        printf("点(%d, %d)不在矩形范围内", point_x, point_y);
    }
    return 0;
}
    
int dentroRetangulo(int v1x, int v1y, int v2x, int v2y, int x, int y)
{
    // 包含边界的判定逻辑,如果不需要边界可去掉=
    if(x >= v1x && x <= v2x && y >= v1y && y <= v2y)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

内容的提问来源于stack exchange,提问作者user17038012

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:45:06