解题思路:
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分
7 人评分
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]))) 屌大的帮我看看为啥过不了
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:732 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:552 |
C语言程序设计教程(第三版)课后习题6.3 (C++代码)浏览:1067 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:582 |
愚蠢的摄影师 (C++代码)浏览:980 |
字符逆序 (C语言代码)浏览:675 |
字符串的输入输出处理 (C语言代码)浏览:1085 |
Pascal三角 (C语言代码)浏览:707 |
淘淘的名单 (C语言代码)浏览:1309 |
多输入输出练习2 (C语言代码)浏览:1709 |