解题思路:

1.四周最外侧的像素点灰度值不变;

2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

3.round()函数是四舍五入(ceil()函数是向上取整,floor()函数是向下取整)



注意事项:

参考代码:

#include<stdio.h>

int main()

{

int n,m,rest=0;

int a[520][520];

scanf("%d %d",&n,&m);

scanf("\n");

for(int i=0;i<n;i++){

    for(int j=0;j<m;j++){

        scanf("%d",&a[i][j]);

    }

    scanf("\n");

}

for(int i=0;i<n;i++){

    for(int j=0;j<m;j++){

        if(i==0||j==0||j==m-1||i==n-1){  //四周最外侧的像素不变,直接输出

            printf("%d ",a[i][j]);

        }

        else{

            rest=round((a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5.0);

       printf("%d ",rest);

        }

    }

    printf("\n");

}

return 0;

}


点赞(0)
 

0.0分

5 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

moonlight 1年前 回复TA
n, m = map(int, input().split())
A, B = [], [[0]*m for i in range(n)]
for _ in range(n):
    A.append(list(map(int, input().strip().split())))
for i in range(n):
    for j in range(m):
        if j == 0 or j == m - 1 or i == 0 or i == n-1:
            B[i][j] = A[i][j]
            continue
        w = A[i-1][j]
        a = A[i][j-1]
        s = A[i+1][j]
        d = A[i][j+1]
        B[i][j] = (A[i][j]+w+a+s+d)//5
    print(" ".join(map(str, B[i])))

屌大的帮我看看为啥过不了