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
相关产品推荐
相关产品推荐

