C语言双人井字棋开发中将输入数字转为二维数组下标的方法
C语言井字棋格子编号转二维坐标实现方法
核心转换逻辑
不需要写冗余的if判断,两步即可完成转换:
- 先把输入的字符类型编号转为整数
你拿到的用户输入是'1'到'9'的字符,利用ASCII码特性直接转整数即可:
char input; scanf("%c", &input); int num = input - '0'; // 字符'1'转整数1,以此类推
- 用算术公式直接计算行下标i和列下标j
按照你给出的映射规则,直接用整数除法和取余运算就能得到对应下标:
int i = (num - 1) / 3; int j = (num - 1) % 3;
公式校验
可以对应你的规则自行验证:
- 输入1:i=(1-1)/3=0,j=(1-1)%3=0 符合要求
- 输入3:i=(3-1)/3=0,j=(3-1)%3=2 符合要求
- 输入5:i=(5-1)/3=1,j=(5-1)%3=1 符合要求
- 输入9:i=(9-1)/3=2,j=(9-1)%3=2 符合要求
额外注意点
建议补充输入合法性校验,避免用户输入异常内容导致数组越界或逻辑错误:
if (num < 1 || num >9) { printf("输入非法,请输入1-9之间的格子编号\n"); // 此处可补充输入重试逻辑 } else if (plateau[i][j] == 'X' || plateau[i][j] == 'O') { printf("该格子已被占用,请重新选择\n"); // 此处可补充输入重试逻辑 } else { plateau[i][j] = 当前玩家标识; // 赋值'X'或'O' }
内容的提问来源于stack exchange,提问作者Mister-3
相关产品推荐
相关产品推荐

