#define _CRT_SECURE_NO_WARNINGS 1 #define NUM 1000 #include<stdio.h> //思路: //遍历 每个 不是雷 的位置的周围的位置 int main() { int n = 0; int m = 0; while (~scanf("%d %d", &n, &m)) { getchar();//吸收换行符 char arr[NUM][NUM] = { 0 }; //向数组中输入元素 for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf("%c", &arr[i][j]); } getchar();//吸收换行符 } //开始遍历数组 for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { //如果某个位置上就是 雷 直接输出 if (arr[i][j] == '*') { printf("*"); } //不是 雷再进行 遍历 ,查找 //定位到每一个位置 else { int cnt = 0;//计数器 统计 某个位置周围雷的数目 for (int a = i - 1; a <= i + 1; a++)//行的范围 { for (int b = j - 1; b <= j + 1; b++)//列的范围 { if (arr[a][b] == '*') { cnt++; } } } //统计完了 就输出 printf("%d", cnt); } } printf("\n");//每一行 结束 之后就换行 } } return 0; } //总结: //充分的使用 getchar ()来 吸收换行符,有点 费劲捏!