【C语言升级练everyday】——扫雷

学习编程语言需要兴趣,一个有趣的代码可能会成为你持之以恒学习的动力。故此,小编编写此文章,希望学习C语言的小新们能够保持对编程的兴趣与热爱!

那么,现在就让我们进入今天的扫雷世界。 

描述:

输入' 0 '和' -1 '形成 n行*m列的雷矩阵(“-1”表示雷),输出时按 扫雷规则 显示雷以及除雷以外的数组元素(该数组元素的值等于以该元素为中心的九宫格包含的雷的个数)。

输入描述

第一行输入行数n及列数m的值。第二行输入矩阵包含的' 0 '和' -1 '。

输出描述

输出的扫雷矩阵的每一行每一列都是一个数字,每个数字的含义是与当前位置相邻的8个格子中,有多少个雷(在下图中,雷用*表示);

若当前位置就是雷的话,仍输出雷 “-1”。

关键点:1.涉及到矩阵边界雷得识别需限制条件;

               2.九宫格遍历(可由两个for循环解决,也可用若干个if语句解决,但此方法比较繁琐);

初始的雷矩阵如下:

扫雷
 1-1 1 0 0 0
 2 2 2 1 1 1
 1-1 2 2-1 1
 2 3-1 2 1 1
 1-1 2 2 1 1
 1 1 1 1-1 1

代码如下:

#include<stdio.h>
int main()
{
    int n,m;
    printf("输入n与m的值:");
    scanf("%d%d",&n,&m);
    int i,j;
    int k,l;
    int a[n][m];
    int count;
    getchar();                     //消耗换行符
    printf("\n输入矩阵元素:\n"); 
    for(i=0;i<n;i++){
        for(j=0;j<m;j++) {
            scanf("%d",&a[i][j]);}
        getchar();}
 printf("输出扫雷矩阵:\n"); 
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            if(a[i][j]!=-1)
            {
                count=0;
                for(k=i+1;k>=i-1;k--)    //遍历九宫格
                {
                    for(l=j+1;l>=j-1;l--)
                    {
                        if(k>=0&&k<n&&l>=0&&l<m) //记录除中心块的九宫格中所含雷
                        {
                            if(a[k][l]==-1)
                                count ++;
                        }
                    }
                }
                printf("%2d ",count);
            }
            else
                printf("%2d ",a[i][j]);
        }
        printf("\n");
        
    }
    return 0;
}

代码运行结果如下:

以上内容是扫雷的基础算法,若有想做完全版的扫雷小游戏可以去B站找扫雷视频哦!

不过千万要记得要会配置相应的语言环境。

总结:今天的出题与解题就到这里辣,有不会的小伙伴们

可以评论区发表意见,我会一一解答哦!

如果您觉得小编写的还可以或者还有哪些地方需要改进的话评论区留言好嘛!

感谢您的阅读!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值