题解 | #扫雷#

扫雷

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");
    }
}

全部评论

相关推荐

沟头学院:无关比赛不要写,这样会显着你主次不分,比赛不要撒谎,有哪些就写那些,创新创业建议删除。技能特长可以适当夸大。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务