蓝桥等考C++组别
十一
级
第一部分:选择题
1、C++ L11 (15分)
定义
一个整型二维数组
a[3][5],这个二维数组最多能存储
( )
个
整数。
8
10
15
24
正确答案:C
2、C++ L11 (15分)
二维数组在内存中是按行、列存储的,二维数组和矩阵的表现形式一致。已定义二维数组a[5][7]按行优先存储,那么对应矩阵的行数和列数是
( )。
5行7列
7行5列
4行6列
6行4列
正确答案:A
3、C++ L11 (20分)
二维数组a[3][3]的表现形式是一个3*3的方阵。运行以下程序,sum计算的是方阵的
( )。
int sum = 0;
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
if(i + j == 2)
sum += a[i][j];
}
}
最下面一行元素的和
最右边一列元素的和
从左上到右下对角线元素的和
从右上到左下对角线元素的和
正确答案:D
第二部分:编程题
4、C++ L11
图像的二值化处理
(50分)
题目名称:图像的二值化处理
题目描述:
我们把用黑、白、灰颜色表示的图像叫做灰度图(Gray Image)。像素是组成图像的最小单元,灰度图的每个像素的颜色
记为
一个0~255的整数,叫做像素值。0代表黑,255代表白,其他数字代表不同深度的灰色,数值越大颜色越
浅
。如
下图
所示。
一张黑白照片高度是m个像素,
宽
度是n个像素。我们可以用二维数组描述这个m*n的像素点阵。
下面的例图是一个7*8的像素点阵,
并标记了像素
值
。
二值图(Binary Image)是指仅包含黑色和白色两种颜色的图像。二值图的像素值只
能
是0和255,分别代表黑和白。
图像的二值化处理过程如下:选择一个临界值k,
将
所有小于
k的
像素值
,
设置为0
;
所有
大于
或等于
k的
像素值,设置为255。这种方法可以将灰度图转化为二值图。
例图中
当k=125时的二值图如
下图
所示。
现在请你写一个程序,已知灰度图每个点的像素值,以及临界值k,求二值图每个点的像素值。
输入:
第一行包含两个整数m
(
1<=m<=30
)
,n
(
1<=n<=30
)
,分别代表灰度图的
高度
和宽度;
第二行一个整数k
(
0<k<255
)
,代表二值化处理时选取的临界值;
接下来有m行,每行包含n个0~255
的
整数,表示
灰度图
的像素值,同一行中相邻两个数用空格隔开。
输出:
共m行,每行包含n个整数,只能是0或255,代表转化
后
二值图的像素值,相邻两个数用空格隔开。
输入样例:
2 3
120
250 120 115
0 200 27
输出样例:
255 255 0
0 255 0
输入样例:
5 6
148
215 182 58 36 150 97
18 182 199 209 133 55
72 130 173 61 124 176
13 37 98 22 217 156
26 9 81 111 207 172
输出样例:
255 255 0 0 255 0
0 255 255 255 0 0
0 0 255 0 0 255
0 0 0 0 255 255
0 0 0 0 255 255
参考程序:
#include<iostream>
using namespace std;
const int N = 30;
int a[N][N];
int main()
{
int m, n, k;
cin >> m >> n >> k;
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
cin >> a[i][j];
if(a[i][j] < k)
a[i][j] = 0;
else
a[i][j] = 255;
}
}
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
测试数据:
1.in
2 3
120
250 120 115
0 200 27
1.out
255 255 0
0 255 0
2.in
5 6
148
215 182 58 36 150 97
18 182 199 209 133 55
72 130 173 61 124 176
13 37 98 22 217 156
26 9 81 111 207 172
2.out
255 255 0 0 255 0
0 255 255 255 0 0
0 0 255 0 0 255
0 0 0 0 255 255
0 0 0 0 255 255
余下略,见附件目录下testcase.txt
蓝桥杯青少组C++组别11级编程练习真题(第6套,共10套)