解题思路:
1.首先,如果只在一个数组a中操作的话,因为一旦一个值改变后,他作为其他位置的上下左右点数值已经发生变化,不是原来的值,所以就会出现错误,我们可以利用两个数组来实现,b数组作为参照数组,用来提供数值
2.另一个就是四舍五入的小技巧,可以在计算结果后,然后+0.5然后再转换为int类型,这样就可以实现
3.最后输出二维数组即可,注意空格和换行
#include<bits/stdc++.h>
using namespace std;
int a[105][105],b[105][105];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
b[i][j]=a[i][j];
}
}
for(int i=2;i<=n-1;i++)
{
for(int j=2;j<=m-1;j++)
{
a[i][j]=floor((b[i][j]+b[i-1][j]+b[i+1][j]+b[i][j-1]+b[i][j+1])*1.0/5+0.5);
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}