一:题目
二:思路分析
1:输入图像
2.根据题目描述1,得出图像四周的数是不变的,即i =1,i=n,j=1,j=m时,图像所表示的数值不变
3根据题目描述2可得,中间的值为四周及其本身的平均值,所以首先求的是五个数的平均值,其次这个平均值如果是小数的话,要四舍五入,重点就是如何四舍五入
三:完整代码
#include <stdio.h>
//1128图像模糊处理
int main()
{
int n = 0, m = 0;
scanf("%d %d", &n, &m);
int arr[105][105] = { 0 };
int i = 0;
for (i = 1; i <= n; i++)
{
int j = 0;
for (j = 1; j <= m; j++)
{
scanf("%d", &arr[i][j]);
}
}
for (i = 1; i <= n; i++)
{
int j = 0;
for (j = 1; j <= m; j++)
{
if (i == 1 || i == n || j == 1 || j == m)
{
printf("%d ", arr[i][j]);
}
else
{
int ave = 0;
//除以5.0先确保得到的平均值时准确的然后再四舍五入,如果直接/5,则结果直接取整,会有误差
ave = (arr[i][j] + arr[i + 1][j] + arr[i - 1][j] + arr[i][j + 1] + arr[i][j - 1]) / 5.0 + 0.5;
printf("%d ", ave);
}
}
printf("\n");
}
return 0;
}