#include<bits/stdc++.h>
using namespace std;
const int N=105;
int n,m;
char r[N][N],c[N][N];
char x;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
scanf(" %c",&x);
r[i][j]=x;
if(r[i][j]=='*') r[i][j]=1;// 注意i和j的顺序,二维数组先是行然后是列
if(r[i][j]=='?') r[i][j]=0;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(r[i][j]==1) c[i][j]='*';
else c[i][j]=r[i-1][j]+r[i][j-1]+r[i-1][j+1]+r[i-1][j-1]+r[i][j+1]+r[i+1][j]+r[i+1][j-1]+r[i+1][j+1]+'0'; // 注意,因为是号码转数字,数字的号码较大,所以要加上0的阿斯科码
printf("%c",c[i][j]);
}
puts("");//换行 ,每输出一行换一次行,puts的这个形式就是换行
}
return 0;
}
题不难,注意阿斯科编码里数字和号码的转换
最新推荐文章于 2024-07-20 18:10:49 发布