题面说明取最接近整数,应四舍五入,把
```
b[i][j]=(a[i][j-1]+a[i][j+1]+a[i-1][j]+a[i+1][j]+a[i][j])/5;
```
改为
```
b[i][j]=(a[i][j-1]+a[i][j+1]+a[i-1][j]+a[i+1][j]+a[i][j])/5.0+0.5;
```
试试
by panrong @ 2024-03-31 18:47:54
@[Xianyujunzhu](/user/1288602)
```cpp
#include <bits/stdc++.h>
using namespace std;
int a[105][105],b[105][105];//数组a存储原来的灰度值,数组b存储改变了的灰度值。
int main(){
int m,n;
cin>>n>>m;//n行数,m列数
//对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];
}
}
//n行m列中除了四周元素的元素进行灰度值改变
for(int i=2;i<n;i++){
for(int j=2;j<m;j++){
b[i][j]=round((a[i][j]+a[i][j+1]+a[i][j-1]+a[i-1][j]+a[i+1][j])*1.0/5);
}
}
//输出改变后的灰度值
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<b[i][j]<<" ";
}
cout<<endl;//每一行结束后换行
}
}
```
by Andyliu2023 @ 2024-04-03 22:20:29