为什么只能输入3 3,后面的内容无法输入?这是为什么?第二个for循环里,我将i,j都各自加2,然后这样就不用判断上方区域是否在指定的范范围内,但是增加的这两行两列,是空白(系统任意给数字),这样没问题吧?
扫雷至表示周围雷个数
为什么只能输入3 3,后面的内容无法输入?这是为什么?第二个for循环里,我将i,j都各自加2,然后这样就不用判断上方区域是否在指定的范范围内,但是增加的这两行两列,是空白(系统任意给数字),这样没问题吧?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 【以下回答由 GPT 生成】
问题分析:
从代码的描述中可以得知,程序只接受输入的第一个数字,即3,而忽略了后面的3。这是因为代码中没有处理用户输入的代码,导致只能接受固定的输入。
另外,在第二个for循环中,将i和j各自加2,可以在更新雷区数字时不需要判断周围方格是否在指定范围内,但这会导致新增加的行列没有被正确初始化,把这两个新添加行列初始化为0即可解决。
解决方案:
问题1:处理用户输入
可以使用scanf函数来处理用户输入,读取用户输入的雷区大小,并存储到适当的变量中。
修改后的代码如下:
#include <stdio.h> int main() { int i, j; int minefield[5][5]; // 一个5x5的表示雷区的数组 int size; // 接收雷区大小 printf("请输入雷区的大小:"); scanf("%dx%d", &size, &size); // 初始化雷区 for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { minefield[i][j] = 0; } } // 在雷区上随机布雷(这部分我这里没有显示出来) // 更新雷区的数字 for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { // 判断当前方格是否为雷 if (minefield[i][j] == 9) { // 周围8个方格的雷数加1 if (i > 0 && j > 0) { minefield[i-1][j-1]++; } // ... 其他7个方向类似的更新 } } } // 打印雷区的状态 for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { printf("%d ", minefield[i][j]); } printf("\n"); } return 0; }
问题2:新增行列的初始化
在新增的两次循环中,需要将新增的行列初始化为0。
修改后的代码如下:
#include <stdio.h> int main() { int i, j; int minefield[7][7]; // 一个7x7的表示雷区的数组,新增2行2列 int size = 5; // 初始化雷区和新增行列 for (i = 0; i < size + 2; i++) { for (j = 0; j < size + 2; j++) { if (i < 2 || i > size + 1 || j < 2 || j > size + 1) { minefield[i][j] = 0; } else { minefield[i][j] = 9; } } } // 在雷区上随机布雷(这部分我这里没有显示出来) // 更新雷区的数字 for (i = 2; i < size + 2; i++) { for (j = 2; j < size + 2; j++) { // 判断当前方格是否为雷 if (minefield[i][j] == 9) { // 周围8个方格的雷数加1 minefield[i-1][j-1]++; minefield[i-1][j]++; minefield[i-1][j+1]++; minefield[i][j-1]++; minefield[i][j+1]++; minefield[i+1][j-1]++; minefield[i+1][j]++; minefield[i+1][j+1]++; } } } // 打印雷区的状态 for (i = 2; i < size + 2; i++) { for (j = 2; j < size + 2; j++) { printf("%d ", minefield[i][j]); } printf("\n"); } return 0; }
请注意,修改后的代码假设雷区最大为7x7,并在初始化雷区和更新雷区数字时,处理新增的两行两列。
这样就解决了问题中提出的两个问题。如果还有其他问题,请及时提出。
【相关推荐】
- 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7802963
- 你也可以参考下这篇文章:算法—输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
- 您还可以看一下 李月喜老师的企业微信开发第三方应用开发篇课程中的 解决方案录入,应用搜索可见,应用上架概述小节, 巩固相关知识点
- 除此之外, 这篇博客: 别翻了,程序员必学十大经典排序算法,看这篇就够了中的 看完有收获?那么希望老铁别吝啬你的三连击哦 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 静电纺丝煅烧后如何得到柔性纤维
- ¥15 (标签-react native|关键词-镜像源)
- ¥100 照片生成3D人脸视频
- ¥15 伪装视频时长问题修改MP4的时长问题,
- ¥15 JETSON NANO
- ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
- ¥20 关于 openpyxl 处理excel文件地问题
- ¥15 MS中不知道高分子的构型怎么构建模型
- ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
- ¥15 matlab代码 关于微分方程和嵌套的分段函数。