题解 | #扫雷#

扫雷

https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd

#include <stdio.h>

//在VS上编译出简单扫雷之后 在牛客上的初次尝试 所以思路是按照我第一次的思路走 所以会略显呆板 见谅。
//可谓 同样的效果 千种的代码 学海无涯 仍需不断的学习

int main() 
{   
    int a,b;
    scanf("%d %d",&a,&b);
    //雷 数组声明
    char mine[a+2][b+2];
    //初始化 雷数组 比输入的雷矩阵大一圈 方便使用 九宫格循环遍历 统计雷数
    for (int i = 0 ; i < a+2 ; i++)
    {
        for (int j = 0; j < b+2 ; j++)
        {
            mine[i][j] = '0';
        }
    }

    //扫雷 数组声明
    char show[a+2][b+2];
    //遍历输入字符 下标从 1 到 a+1 
    for (int i = 1 ; i < a+1 ; i++)
    {
        for (int j = 1 ; j < b+1 ; j++)
        {
            //scanf这里一定要注意" %c" ,没有空格这里就会出错 虽然有了getchar() 还是得加上空格
            scanf(" %c",&mine[i][j]);
        }
        //吸收回车'\n'  也可用 while(getchar() != '\n');
        getchar();
    }

    //循环遍历 雷矩阵
    for (int i = 1 ; i < a+1 ; i++)
    {
        for (int j = 1 ; j < b+1 ; j++)
        {
            //如果此位置是不是雷
            if(mine[i][j] != '*')
            {
                //计数变量 用作记录雷的数量 用于表达在 扫雷数组里
                int count = 0;
                //九宫格循环遍历 统计雷数
                for(int m = -1 ; m < 2 ; m++)
                {
                    for(int n = -1 ; n < 2 ; n++)
                    {
                        //判断 如果是雷 则count++
                        if (mine[i+m][j+n] == '*')
                        {
                            count++;
                        }
                    }
                }
                //将数字count加上'0'后变为字符 'count' ,因为 '0'的ASCII码值为 48(是多少都一样) 主要是'0'后面字符都是连续的'48+1'即为'1'
                show[i][j] = count + '0';                
            }
            //否则 如果此位置是雷 仍输出'*'
            else 
            show[i][j] = '*';
        }
    }

    //循环遍历打印 show扫雷数组
    for (int i = 1 ; i < a+1 ; i++)
    {
        for (int j = 1 ; j < b+1 ; j++)
        {
            printf("%c",show[i][j]);
        }
        //每打印一行 记得换行
        printf("\n");
    }    
    return 0;
}

全部评论

相关推荐

06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务