#include<stdio.h> int main() { int n = 0, m = 0; char input = 0; //将是否有雷存在一个矩阵里,转化为0和1,方便运算 int arr1[1001][1001] = { 0 };//为了防止后面的算法越界,在题目要求数组外再加一层全为0的元素 //最后运算结果用另一个矩阵表示 char arr2[1001][1001] = { '0' }; scanf("%d %d\n", &n, &m); //输入数组,转化为0,1 for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { scanf("%c ", &input); if (input == '*') arr1[i][j] = 1; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (arr1[i][j] == 0) { //寻找雷,将周围的1和0加起来就是雷的个数,并赋给arr2 arr2[i][j] = (arr1[i - 1][j] + arr1[i - 1][j - 1] + arr1[i][j - 1] + arr1[i + 1][j - 1] + arr1[i + 1][j] + arr1[i + 1][j + 1] + arr1[i][j + 1] + arr1[i - 1][j + 1] + '0'); } else arr2[i][j] = '*'; } } //打印arr2 for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { printf("%c", arr2[i][j]); } printf("\n"); } return 0; }