1066 图像过滤 (15 point(s))

#include <bits/stdc++.h>
using namespace std;

int main() {
	int m, n, a, b, grey;
	cin >> m >> n >> a >> b >> grey;
	
	// 读取
	int pic[m][n];
	for(int i = 0; i < m; i++){
		for(int j = 0, tmp; j < n; j++){
			cin >> tmp;
			pic[i][j] = tmp;
		}
	} 
	
	// 输出 
	for(int i = 0; i < m; i++){
		for(int j = 0, first = 0; j < n; j++){
			// 区间内替换 
			if(a <= pic[i][j] && pic[i][j] <= b)
				cout << (first++ ? " " : "") << setw(3) << setfill('0') << grey;
			else 
				cout << (first++ ? " " : "") << setw(3) << setfill('0') << pic[i][j];
		}
		// 换行
		cout << endl; 
	} 
}

上一题从别人那学来的 setw() 以及 setfill() 用来填充高位的 0 就派上用场了。

这里看数据区间的时候要注意 > < 下面的等号 = ,替换区间内的符号下面是多一杠的 ≥ 小于等于。所以判断的时候要加上等号 = 。

posted on 2021-09-07 12:38  Atl212  阅读(33)  评论(0)    收藏  举报

导航