[c]扫雷

题目描述

扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。

玩家翻开一个非地雷格时,该格将会出现一个数字------提示周围格子中有多少个是地雷格。

现在给出n行m列的雷区中的地雷分布,请计算出每个非地雷格周围的地雷格数。

注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。

输入描述:

复制代码
第一行输入两个整数n,m ,分别表示雷区的行数和列数。

接下来n行,每行m个字符,描述了雷区中的地雷分布情况。字符’*’表示相应格子是地雷格,字符’?’表示相应格子是非地雷格。相邻字符之间无分隔符。

1<=n,m<=100

输出描述:

复制代码
输出包含n行,每行m个字符,描述整个雷区。用‘*’表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符

示例1

输入

复制代码
3 3
*??
???
?*?

输出

复制代码
*10
221
1*1

题目很容易理解,就是判断字符数组元素周围*元素的个数

下面附上代码

cs 复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n, m;
	int count = 0;
	char s[100][100] = { 0 };
	scanf("%d %d", &n, &m);
	getchar();
	for (int i = 1; i <= n; i++)
	{
		for (int k = 1; k <= m; k++)
		{
			s[i][k] = getchar();
		}
		getchar();
	}
	for (int i = 1; i <= n; i++)
	{
		for (int k = 1; k <= m; k++)
		{
            count=0;
			if (s[i][k] == '*')
			{
				printf("*");
			}
			else
			{
				if (s[i - 1][k] == '*' )
					count++;
				if (s[i + 1][k] == '*')
					count++;
				if (s[i][k - 1] == '*')
					count++;
				if (s[i][k + 1] == '*')
					count++;
				if (s[i - 1][k - 1] == '*' )
					count++;
				if (s[i - 1][k + 1] == '*')
					count++;
				if (s[i + 1][k + 1] == '*')
					count++;
				if (s[i + 1][k -1] == '*')
					count++;
                printf("%d", count);
			}
		}
		printf("\n");;
	}
	return 0;
}

注意每输入一组需要用一次getchar,来读取输入完的回车,新手可能会遇到输入时候程序直接结束了,明明还没有输完,就打印结果了,这种情况可能就是getchar没有合理利用

我们可以输入完进行调试,看看创建的字符数组中是不是自己想要的字符

相关推荐
你挚爱的强哥8 分钟前
【exportExcel】单纯靠js不用任何其他第三方插件导出xls格式文件
开发语言·javascript·ecmascript
LuminousCPP18 分钟前
数据结构-时间与复杂度|时间/空间复杂度 + 两道力扣练习 + 二分查找复盘
c语言·数据结构·经验分享·算法·leetcode
Nil20820 分钟前
leetcode 三数之和
数据结构·算法·leetcode
Hello_Damon_Nikola22 分钟前
AC7911从入门到精通
开发语言·嵌入式硬件·物联网·php
worxfr28 分钟前
Go 并发控制:从 Channel 方向约束到实战模式
开发语言·后端·golang
带鱼吃猫32 分钟前
预处理器:宏、运算符与条件编译
c语言·开发语言
小小龙学IT40 分钟前
C++ std::vector 底层实现深度解析:内存布局、扩容策略、移动语义与迭代器失效
开发语言·c++·算法
eBest数字化转型方案1 小时前
从工程视角拆解冰柜资产管理:拍照识别 pipeline、纯净度算法与 IoT 选型踩坑
人工智能·物联网·算法
Interview Aid1121 小时前
Roblox OA 面经|小游戏+编程双修,Coding 两题满分通过
算法
码匠许师傅1 小时前
【C++ 面试真题】聊聊 volatile 和 mutable
开发语言·c++·面试