PAT乙级1066-----图像过滤 (15分)(水)
1066 图像过滤 (15分)
图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。
输入格式:
输入在第一行给出一幅图像的分辨率,即两个正整数 M 和 N(0),另外是待过滤的灰度值区间端点 A 和 B(0)、以及指定的替换灰度值。随后 M 行,每行给出 N 个像素点的灰度值,其间以空格分隔。所有灰度值都在 [0, 255] 区间内。
输出格式:
输出按要求过滤后的图像。即输出 M 行,每行 N 个像素灰度值,每个灰度值占 3 位(例如黑色要显示为 000
),其间以一个空格分隔。行首尾不得有多余空格。
输入样例:
3 5 100 150 0
3 189 254 101 119
150 233 151 99 100
88 123 149 0 255
输出样例:
003 189 254 000 000 000 233 151 099 000 088 000 000 000 255
思路:判断输入输入是否位于[min.max]之间选择输出原数还是输出替换的灰度值
首次通过代码:
1 #include<stdio.h> 2 3 void output(int a){ 4 if(a<10) printf("00%d",a); 5 else if(a<100) printf("0%d",a); 6 else printf("%d",a); 7 } 8 int main(){ 9 int M,N; 10 int max,min; 11 int grey; 12 scanf("%d %d %d %d %d",&M,&N,&min,&max,&grey); 13 for(int i=0;i<M;i++){ 14 for(int j=0;j<N;j++){ 15 int a; 16 scanf("%d",&a); 17 if(a>=min&&a<=max) output(grey); 18 else output(a); 19 if(j!=N-1) printf(" "); 20 } 21 if(i!=M-1) printf("\n"); 22 } 23 return 0; 24 }