题目比较简单直接上代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define MAXN 110
int n,m;
int ans[MAXN][MAXN];
int main()
{
int ta=0;
while(cin>>n>>m&&n+m)
{
if(ta) cout<<endl;
ta++;
char s;
memset(ans,0,sizeof(ans));
for(int i=1;i<=n;i++)
{
getchar();
for(int j=1;j<=m;j++)
{
s=getchar();
if(s=='*')
{
ans[i][j]=-1;
if(ans[i+1][j]!=-1) ans[i+1][j]++;
if(ans[i-1][j]!=-1) ans[i-1][j]++;
if(ans[i][j+1]!=-1) ans[i][j+1]++;
if(ans[i][j-1]!=-1) ans[i][j-1]++;
if(ans[i+1][j+1]!=-1) ans[i+1][j+1]++;
if(ans[i-1][j-1]!=-1) ans[i-1][j-1]++;
if(ans[i+1][j-1]!=-1) ans[i+1][j-1]++;
if(ans[i-1][j+1]!=-1) ans[i-1][j+1]++;
}
}
}
cout<<"Field #"<<ta<<":"<<endl;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(ans[i][j]==-1)
cout<<'*';
else
cout<<ans[i][j];
}
cout<<endl;
}
}
return 0;
}