代码如下
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[105][105];
int b[105][105],n,m,i,j;
cin>>n>>m;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));//清空
for (i=0;i<=n;i++)
{
for (j=0;j<=m;j++)
{
cin>>a[i][j];
if (a[i][j]=='*')
{
b[i][j]=10;
}
}
}//一边输入 一边转换 有地雷为10(后面有大用(最骄傲的一点))
for (i=0;i<=n;i++)
{
for (j=0;j<=m;j++)
{
if (b[i][j]==10)
continue;
if (i==0 && j==0)
{
b[i][j]=(b[i+1][j]+b[i][j+1]+b[i+1][j+1])/10;
continue;
}
if (i==n && j==m)
{
b[i][j]=(b[i-1][j]+b[i][j-1]+b[i-1][j-1])/10;
continue;
}
if (i==n && j==0)
{
b[i][j]=(b[i-1][j]+b[i][j+1]+b[i-1][j+1])/10;
continue;
}
if (i==0 && j==m)
{
b[i][j]=(b[i+1][j]+b[i][j-1]+b[i+1][j-1])/10;
continue;
}
if (i==0)
{
b[i][j]=(b[i+1][j]+b[i-1][j]+b[i][j-1]+b[i+1][j+1]+b[i-1][j+1])/10;
continue;
}
if (i==n)
{
b[i][j]=(b[i+1][j]+b[i-1][j]+b[i][j+1]+b[i+1][j-1]+b[i-1][j-1])/10;
continue;
}
if (j==0)
{
b[i][j]=(b[i][j-1]+b[i][j+1]+b[i+1][j]+b[i+1][j+1]+b[i+1][j-1])/10;
continue;
}
if (j==m)
{
b[i][j]=(b[i-1][j]+b[i][j-1]+b[i][j+1]+b[i-1][j-1]+b[i-1][j+1])/10;
continue;
}
else
{
b[i][j]=(b[i-1][j]+b[i+1][j]+b[i][j-1]+b[i][j+1]+b[i-1][j-1]+b[i+1][j+1]+b[i-1][j+1]+b[i+1][j-1])/10;
continue;
}
}
}//分一堆情况讨论
for (i=0;i<=n;i++)
{
for (j=0;j<=m;j++)
{
if (b[i][j]==10)
cout<<'*';
else
cout<<b[i][j];
}//终于结束了!!
cout<<endl;
}
return 0;
}