[c]扫雷

题目描述

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

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

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

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

输入描述:

第一行输入两个整数n,m ,分别表示雷区的行数和列数。接下来n行,每行m个字符,描述了雷区中的地雷分布情况。字符’*’表示相应格子是地雷格,字符’?’表示相应格子是非地雷格。相邻字符之间无分隔符。1<=n,m<=100

输出描述:

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

示例1

输入

3 3
*??
???
?*?

输出

*10
221
1*1

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

下面附上代码

#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没有合理利用

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派python gpio 模仿iic_Adafruit的树莓派教程:GPIO配置

概览树莓派最令人兴奋的特点之一是它有一个GPIO连接器可以用来接其他的硬件设备。GPIO连接器实际上是由许多不同类型的接口组成的&#xff1a;真正的GPIO(General Purpose Input Output,通用输入/输出)针脚&#xff0c;你可以用来控制LED灯的开和关。I2C(Inter&#xff0d;Inte…

netcore docker_让.NetCore程序跑在任何有docker的地方

一.分别在Windows/Mac/Centos上安装DockerWindows上下载地址&#xff1a;https://docs.docker.com/docker-for-windows/install/&#xff08;window上安装的常见问题和解决方案请参考下方步骤六&#xff09;Mac上下载地址&#xff1a;https://hub.docker.com/editions/communit…

MapReduce 编程实践

文章目录1. MapReduce 作业流程2. 实践2.1 启动 hadoop2.2 创建 java 项目2.3 MapReduce shell2.4 MapReduce Web UI3. MapReduce 编程实践&#xff1a;统计对象中的某些属性参考书&#xff1a;《Hadoop大数据原理与应用》1. MapReduce 作业流程 2. 实践 2.1 启动 hadoop sta…

linux c代码出现段错误,Linux下段错误(C语言)

问题描述&#xff1a;在Linux下编程有时会出现段错误的提醒&#xff0c;出现这种错误有可能是因为以下几种原因1.数组越界&#xff1a;如果在初始化或者接收输入时内容超过了定义好的数组元素个数时会出现段错误&#xff0c;Linux的数组越界检查做的不是很好&#xff0c;在编译…

micropython webrepl_4-5 MicroPython WebREPL 命令行交互环境设置-2 接入点模式

在这一节教程里我们将一起学习如何为NodeMCU在接入点模式下设置MicroPython网络命令行交互环境(以下简称: WebREPL)。所谓接入点模式就是NodeMCU可以建立WIFI网络供其他设备接入。如下图所示。ESP8266-NodeMCU接入点(Access Point)工作模式在开始设置WebREPL以前请确认您已经完…

基于XMPP实现的Openfire的配置安装+Android客户端的实现

http://blog.csdn.net/sky_monkey/article/details/9495571转载于:https://www.cnblogs.com/eustoma/p/4217028.html

lammps软件_Lammps模型构建的方法之一:组合模型构建

对于Lammps初学者&#xff0c;建模的方法主要有以下几种&#xff1a;1、在Lammps中自行建模&#xff0c;适合金属等简单的模型&#xff0c;如果遇到聚合物就比较麻烦了&#xff1b;2、通过第三方软件建模&#xff0c;例如&#xff1a;Matlab、Python、VMD、Material Studio(MS)…

MapReduce 编程实践:统计对象中的某些属性

文章目录1. 生成数据2. 编写实体类3. Mapper类4. Reducer类5. Driver类6. 运行参考书&#xff1a;《Hadoop大数据原理与应用》 相关文章&#xff1a;MapReduce 编程实践 1. 生成数据 超市消费者 数据&#xff1a; id&#xff0c; 时间&#xff0c;消费金额&#xff0c;会员/…

linux共享数据,使用Linux共享数据对象

Linux共享数据对象类似于windows中的动态链接库&#xff0c;其后缀通常为so.* (*为版本号)&#xff0c;例如为我们所熟知的libpcap&#xff0c;它对应的文件为/usr/lib/libpcap.so。如果程序中使用了某共享数据对象文件&#xff0c;需要在链接时指定gcc的链接参数。如使用libpc…

pythonselenium提高爬虫效率_[编程经验] Python中使用selenium进行动态爬虫

Hello&#xff0c;大家好&#xff01;停更了这么久&#xff0c;中间发生了很多事情&#xff0c;我的心情也发生了很大的变化&#xff0c;看着每天在增长的粉丝&#xff0c;实在不想就这么放弃了&#xff0c;所以以后我会尽量保持在一周一篇的进度&#xff0c;与大家分享我的学习…

超级签名源码_企业签名和超级签名有哪些区别?

我们知道iOS系统对于非App Store中的应用是有安装限制的&#xff0c;而App Store严格的审核机制又将许多APP拒之门外&#xff0c;这令不少开发者们郁闷不已。所以很多开发者们会选择苹果签名的方式&#xff0c;让自己的iOS APP可以不经过App Store就安装在用户的苹果手机上&…

2015-01-14

1.鞋子到了 2.网络一天没有好 3. 又吸烟了,难受 4. 单双杠&#xff1a;60 5. 洗澡&#xff1a;no 6. 仰卧起坐&#xff1a;100 7. 洗脚/刷牙 8.曾的车 9.老梁关世界 总结&#xff1a;今天还好吧&#xff0c;但我还是很想znn&#xff01;&#xff01; 转载于:https://www.cnblo…

天池 在线编程 到达终点

文章目录1. 题目2. 解题1. 题目 描述 A robot is located in a pair of integer coordinates (x, y). It must be moved to a location with another set of coordinates. Though the bot can move any number of times, it can only make the following two types of moves:…

python os函数_python os模块主要函数

使用python提供的os模块&#xff0c;对文件和目录进行操作&#xff0c;重命名文件&#xff0c;添加&#xff0c;删除&#xff0c;复制目录以及文件等。一、文件目录常用函数在进行文件和目录操作时&#xff0c;一般会用到以下几种操作。1、获得当前&#xff1b;路径在python中可…

第十七节(is-a 、is-like-a 、has-a,包和 import )

is - a 类与类之间的继承关系&#xff1b;is - like - a 类与接口之间的关系&#xff1b;has - a 关联关系&#xff1b; public class Animal{public void method01();}// 类与类之间的关系class Dog extends Animal{ // Dog is a Animal} /// public interface I{public void…

quartz获取开始结束时间_Springboot集成quartz

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。本文描述在springboot 2.x环境下怎么集成quartz。一、添加quartz到项目中在pom.xml中加入 <dependency>特别注意application入口类的注解&#xff0c;这里一定…

linux 添加本地磁盘,XenServer如何添加本地存储

在一次测试中&#xff0c;发现本地有两块磁盘&#xff0c;但是只有一块磁盘在XenServer中显示出来&#xff0c;另外一块没有显示。本地只有一个Local storage。查询KB后&#xff0c;发现XenServer可以添加多块本地存储。详情&#xff0c;请见KB&#xff1a;CTX121313详细添加如…

流畅的Python 5. 函数

文章目录1. 函数对象2. 高阶函数3. 匿名函数4. 可调用函数5. 定位参数、仅限关键字参数6. 获取参数信息7. 函数注解8. 支持函数式编程的包1. 函数对象 def factorial(n):returns n! n的阶乘return 1 if n < 2 else n * factorial(n - 1)print(factorial(42)) print(factori…

python方向键键值_python字典键值对的添加和遍历方法

添加键值对 首先定义一个空字典 >>> dic{} 直接对字典中不存在的key进行赋值来添加 >>> dic[name]zhangsan >>> dic {name: zhangsan} 如果key或value都是变量也可以用这种方法 >>> keyage >>> value30 >>> dic[key]val…

无穷大正整数 python_python模块:数字处理

http://blog.csdn.net/pipisorry/article/details/37055183python数字处理简介数字类型python没有unsighed int&#xff1a;The Python int is an abstraction of an integer value, not a direct access to a fixed-byte-size integer.不过int还是当成sighed int处理的&#x…