代码:
#include<bits/stdc++.h>
using namespace std;
int a[105][105],m,n;
int b[105][105];
char c;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c;
if(c=='*')b[n][m]=1;
else b[n][m]=0;
// cout<<b[n][m];
}
// cout<<endl;
}
// for(int i=1;i<=n;i++){
// for(int j=1;j<=m;j++){
// cout<<b[n][m];
// }
// cout<<endl;
// }
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(b[n][m]==1)continue;
if(b[n-1][m]==1)a[n][m]++;
if(b[n][m-1]==1)a[n][m]++;
if(b[n-1][m-1]==1)a[n][m]++;
if(b[n+1][m-1]==1)a[n][m]++;
if(b[n-1][m+1]==1)a[n][m]++;
if(b[n][m+1]==1)a[n][m]++;
if(b[n+1][m]==1)a[n][m]++;
if(b[n+1][m+1]==1)a[n][m]++;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(b[n][m]==1)cout<<'*';
else cout<<a[i][j];
}
cout<<endl;
}
return 0;
}
里面注释掉的cout是用来调试的,循环里的cout显示的b数组没问题但是一到循环外输出就全是0.