当用户输入棋子坐标时,若两个数值之间没有输入空格,则不会打印下棋后的棋盘。
求解惑!
scanf函数中的%d读取规则是先检索正负号,再检索数字,第一次遇到其它字符后停止检索,并保存在对应地址,如果后面还有%d,则重复上面的检索,知道所有字符检索完,或者没有字符直接结束检索。按照你这个输入,保存在x中的是21,y中没有保存值,是内存中随机的一个数字,所以判断为非法输入。
以下答案引用自GPT-3大模型,请合理使用:
解决办法:
1. 使用scanf()函数,读取用户输入的两个数值,使用"%d %d"格式读取,这样可以确保scanf()正确读取用户输入的两个数值,避免不输入空格而造成此类Bug.
下面是实现以上思路,代码如下所示:
#include <stdio.h>
void main()
{
int x, y;
printf("请输入要落子的坐标(x y):");
// 使用"%d %d"格式,确保输入的数值正确读取
scanf("%d %d", &x, &y);
printf("您落子的坐标为:(%d, %d)\n", x, y);
// 打印下棋后的棋盘
// ...
}
如果我的回答解决了您的问题,请采纳我的回答
不知道你这个问题是否已经解决, 如果还没有解决的话: