文库 真题 蓝桥杯真题

蓝桥杯青少组C++组别11级编程练习真题(第7套,共10套)

蓝桥杯青少组11级真题 蓝桥杯C++真题 DOCX   6页   下载4   2024-02-16   浏览165   收藏7   点赞10   评分-   免费文档
温馨提示:当前文档最多只能预览 2 页,若文档总页数超出了 2 页,请下载原文档以浏览全部内容。
蓝桥杯青少组C++组别11级编程练习真题(第7套,共10套) 第1页
蓝桥杯青少组C++组别11级编程练习真题(第7套,共10套) 第2页
剩余4页未读, 下载浏览全部
蓝桥等考C++组别 十一 级 第一部分:选择题 1、C++ L11 (15分) 下面对二维数组的定义和初始化语句,正确的是( )。 int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; int a[2][3] = {{1, 2}, {3, 4}, {5, 6}}; int a[][] = {{1, 2, 3}, {4, 5, 6}}; int a[][] = {{1, 2}, {3, 4}, {5, 6}}; 正确答案:A 2、C++ L11 (15分) 二维数组在内存中是按行、列存储的,二维数组和矩阵的表现形式一致。已定义二维数组a[4][6]按行优先存储,那么对应矩阵的行数和列数是 ( )。 4行6列 6行4列 3行5列 5行3列 正确答案:A 3、C++ L11 (20分) 执行以下程序后,a[2][2]的值是 ( )。 int a[3][3]; for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { if(i == 0 || j == 0) a[i][j] = 1; else a[i][j] = 2 * a[i - 1][j] + a[i][j - 1]; } } 1 5 7 17 正确答案:D 第二部分:编程题 4 、C++ L11 矩阵切块( 2 0分) 题目名称:矩阵切块 题目描述: 给定一个 m * n 的整数矩阵和两个整数x、y,输出矩阵的第x列到第y列(含第x、y列)的所有内容。 例如:当m = 4 ,n = 5 ,4 * 5 的矩阵为: 25 7 15 18 21 23 20 20 25 21 17 17 17 6 16 20 5 24 22 1 当x = 2 ,y = 3 ,输出第 2 列到第 3 列的结果为: 7 15 20 20 17 17 5 24 输入: 第一行输入4个正整数,分别为: m(3 <= m<= 5 0),表示矩阵的行数; n(3 <= n <= 5 0),表示矩阵的列数; x(1<= x <= 5 0),表示切块的起始列号; y(1<= x <= y <= 5 0),表示切块的截止列号; 相邻两个数 用 一个空格隔开。 接下来输入m行,每行包含 n 个小于1 000 的正整数,相邻两个数 用 一个空格隔开。 输出: 输出矩阵从第x列到第y列的切块,切块的每一行元素占一行,元素之间 用 一个空格隔开。 输入样例: 4 5 2 3 25 7 15 18 21 23 20 20 25 21 17 17 17 6 16 20 5 24 22 1 输出样例: 7 15 20 20 17 17 5 24 参考代码: #include<iostream> using namespace std; const int N = 20; int a[N+1][N+1]; int main() { int m, n, x, y; cin >> m >> n >> x >> y; for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { cin >> a[i][j]; } } for (int i = 1; i <= m; i++) { for (int j = x; j <= y; j++) { cout << a[i][j] << ' '; } cout << endl; } return 0; } 测试数据: 1.in 4 5 2 3 25 7 15 18 21 23 20 20 25 21 17 17 17 6 16 20 5 24 22 1 1.out 7 15 20 20 17 17 5 24 2.in 5 6 1 5 452 133 624 516 405 526 57 149 943 395 200 503 721 980 273 940 284 743 920 433 247 294 113 289 360 848 447 232 923 23 2.out 452 133 624 516 405 57 149 943 395 200 721 980 273 940 284 920 433 247 294 113 360 848 447 232 923 余下略 5、C++ L11 炸弹人(30分) 题目名称: 炸弹人 题目描述: 将一个有边界的 正方形 区域划分成n*n 的网 格,有 些 格里可能有 小怪物(每个格最多1个),你的目标是用炸弹消灭它们。炸弹只有1个,炸弹所在的位置没有 怪物 。 下面的例图中,炸弹在第3行第3列(左上角的格是第1行第1列)。 炸弹爆炸后,能 将与它同一行,同一列格子里的怪物消灭掉。如 下图 所示,黄色区域是炸弹的攻击范围 。 第3行和第3列的怪物,都因为在炸弹的攻击范围内,所以被消灭掉了。 给出区域网格的 数量 ,以及 怪物和炸弹的位置,计算 炸弹爆炸后 还有多少 怪物 没被消灭 。 输入: 第一行 一 个整数 n ( 1< n <= 1 0 ) 代表正方形 区域 每行(或 每列 ) 的网格数量; 接下来 n 行,每行 n 个整数 0、1或2 , 描述n*n的区域内, 怪物和炸弹的 分布情况。0代表空地,1代表格里有怪物,2代表格里有炸弹,相邻两个数之间用空格隔开。 测试数据保证只有一个地方有炸弹 。 输出: 一个整数,代表 炸弹爆炸后没被消灭的怪物数量 。 输入样例: 5 0 0 0 0 0 0 1 1 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 输出样例: 1 参考程序: #include <iostream> using namespace std; const int N = 10; int a[N + 1][N + 1]; int main() { int n, x, y, enemy = 0; cin >> n; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { cin >> a[i][j]; if(a[i][j] == 1) //统计怪物的数量 { enemy++; } if(a[i][j] == 2) //记下炸弹的位置 { x = i; y = j; } } } for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if( a[i][j] == 1 && (i == x || j == y)) //如果怪物与炸弹的行或
蓝桥杯青少组C++组别11级编程练习真题(第7套,共10套)
下载提示

下载及版权说明:6547网文库内容来自网络及各平台公开内容(属于用户上传,不保证正确性,只做参考),旨在帮助同学们学习少儿编程相关知识及内容,仅限内部学习及使用,以分享为主,下载本文档之后请合法使用相关、真题、素材、课件、教程等内容,若内容存在侵权,请进行 举报 及查看 免责声明