题解 | #扫雷#

扫雷

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

#include <stdio.h>

int main() {
    int n, m;
    scanf("%d %d\n", &n, &m);   /* 根据输入的行列值声明数组 */
    char arr[n][m];
    for(int j=0; j<n; j++)      /* 向数组中填入数据 */
    {
        for(int i=0; i<m; i++)
        {
            scanf("%c", &arr[j][i]);
        }
        getchar();  /* 排除回车的干扰 */
    }

    for(int j=0; j<n; j++)      /* 从数组的第一个元素开始判断转换输出字符 */
    {
        for(int i=0; i<m; i++)
        {
            if(arr[j][i] == '*')    /* 该元素是地雷就直接输出 */
            {
                printf("*");
            }
            else 
            {
                int sum = 0;    /* 用于记录该元素相邻位置的地雷数量 */
                for (int r=j-1; r<=j+1; r++)
                {
                    for(int w=i-1; w<=i+1; w++)
                    {
                        if(r>=0 && r<n && w>=0 && w<m)  /* 该元素如果已经处于数组的边缘
                                                            就只判断数组有效下标 */
                        {
                            if(arr[r][w] == '*')
                            {
                                sum++;
                            }
                        }
                    }
                }
                printf("%d", sum);  /* 输出统计值 */
            } 
        }
        printf("\n");
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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