考试时间:60 分钟 满分:100 分
适用:小学组|算法应用主题赛
版本:2026 初赛(智传民韵)
内容:试题 + 答案 + 详细解析
用途:备考刷题、复习巩固、赛前训练
一、单项选择题(每题 5 分,共 15 题,75 分)
第 1 题
在 “灯笼阵列生成器” 中,需打印一个 5 行 5 列的方阵,每行输出 “🏮” 符号。以下哪段代码能正确实现?
A. for(int i=0; i<5; i++) cout << "🏮" * 5 << endl;
B. for(int i=0; i<5; i++) { for(int j=0; j<5; j++) cout << "🏮"; cout << endl; }
C. cout << "🏮" * 25;
D. A 和 B 均可
✅ 正确答案:B
解析:C++ 不支持字符串与数字相乘,必须用双层循环逐个输出。
第 2 题
要实现 “舞龙队伍” 中第 n 条龙的位置为 (n×10, n×5),当 n=3 时,其坐标是?
A. (30, 15)
B. (10, 5)
C. (3, 3)
D. (90, 45)
✅ 正确答案:A
解析:3×10=30,3×5=15,坐标为 (30, 15)。
第 3 题
在 “民俗词汇接龙游戏” 中,玩家输入词语,系统检查是否与前一个词尾字相同。若当前词库为 {"春节", "节日", "日历"},下一个合法词应满足什么条件?
A. 首字是 “历”
B. 尾字是 “日”
C. 长度等于 3
D. 包含 “节” 字
✅ 正确答案:A
解析:接龙规则为上一个词尾字 = 下一个词首字,最后一词 “日历” 尾字为 “历”。
第 4 题
判断一个整数 n 是否为 2 的幂次方(如 1,2,4,8…),最高效的位运算表达式是?
A. n % 2 == 0
B. n & (n - 1) == 0(且 n>0)
C. n | (n + 1) == 0
D. n ^ 1 == 0
✅ 正确答案:B
解析:2 的幂次方二进制只有 1 个 1,n & (n-1) 结果为 0。
第 5 题
下列代码片段用于寻找数组中的重复元素(嵌套循环),其时间复杂度为?
1 2 3 for(int i=0; i<n; i++) for(int j=i+1; j<n; j++) if(a[i] == a[j]) return true;
A. O(N)
B. O(NlogN)
C. O(N²)
D. O(1)
✅ 正确答案:C
解析:双层循环,时间复杂度为 O(N²)。
第 6 题
在 “灯谜智能解析” 中,谜面 “一口咬掉牛尾巴” 打一字,程序需提取关键字 “牛” 和 “尾”。以下哪种方法最合适?
A. 使用 split () 分割空格(C++ 无内置 split)
B. 使用 find () 查找子串位置
C. 使用正则表达式(超出范围)
D. 手动逐字符遍历
✅ 正确答案:B
解析:string::find 可直接查找关键词,简单高效。
第 7 题
在模拟 “舞龙队伍动态增减” 时,使用 vector<int> 存储队员 ID。连续 push_back 1000 次,关于内存分配策略说法正确的是?
A. 每次增加 1 个空间,效率最低
B. 按固定倍数(1.5/2 倍)扩容,均摊复杂度 O (1)
C. 预先分配 1000 个空间,无需扩容
D. 扩容时会丢失原有数据
✅ 正确答案:B
解析:vector 按倍数扩容,均摊时间复杂度为 O(1)。
第 8 题
定义函数 int calculate_brightness(int row) 计算第 row 行灯笼总亮度(第 n 行有 n 个灯笼,每个亮度 n²),调用 calculate_brightness(5) 应返回?
A. 55
B. 25
C. 125
D. 15
✅ 正确答案:C
解析:第 5 行有 5 个灯笼,每个亮度 25,总和为 125。
第 9 题
在 “非遗传承人档案库” 中,按 “技艺等级降序,等级相同按年龄升序” 排序,sort 比较器 cmp 正确的是?
A. return a.level > b.level || (a.level == b.level && a.age < b.age);
B. return a.level < b.level && a.age > b.age;
C. return a.level > b.level && a.age < b.age;
D. return a.level >= b.level || a.age <= b.age;
✅ 正确答案:A
解析:先比等级降序,等级相同比年龄升序。
第 10 题
角色从起点 (0,0) 出发,执行指令后最终坐标是?
1 2 3 4 5 6 int x = 0, y = 0;int steps[][2] = {{10,0}, {0,-10}, {-5,0}};for(int i=0; i<3; i++) { x += steps[i][0]; y += steps[i][1];}
A. (5, -10)
B. (15, -10)
C. (5, 10)
D. (0, 0)
✅ 正确答案:A
解析:x=10-5=5,y=-10,坐标 (5,-10)。
第 11 题
在 “庙会寻宝地图” 中,路径点 path[4][2] = {{0,0}, {50,0}, {50,-50}, {100,-50}},终点应访问哪个索引?
A. path [0]
B. path [1]
C. path [2]
D. path [3]
✅ 正确答案:D
解析:数组共 4 个点,最后一个点下标为 3。
第 12 题
在 “皮影戏场景切换” 中,scene=1/2/3 对应不同动作,能正确执行的代码是?
A. if-else 结构
B. while 循环结构
C. switch-case 结构
D. A 和 C 均可
✅ 正确答案:D
解析:if-else 与 switch 都可实现多分支判断。
第 13 题
在计算 “龙舟比赛平均速度” 时,大量浮点数累加避免精度丢失的最佳实践是?
A. 使用 float 代替 double
B. 先转为整数计算,最后再除
C. 使用 double 并按从小到大累加
D. 随意累加,误差可忽略
✅ 正确答案:B
解析:整数运算无精度损失,结果最准确。
第 14 题
函数 void swap_val(int a, int b) 和 void swap_ref(int &a, int &b)。要真正交换 x,y 应调用?
A. swap_val (x, y)
B. swap_ref (x, y)
C. 两者均可
D. 两者均不可
✅ 正确答案:B
解析:引用传参才能交换外部变量原值,值传递无效。
第 15 题
“年画图层叠加” 需实现 “撤销” 功能(取消最近一次绘制),最适合的数据结构是?
A. 队列 (Queue)
B. 栈 (Stack)
C. 链表 (List)
D. 树 (Tree)
✅ 正确答案:B
解析:栈遵循先进后出,适合实现撤销 / 回退。
二、判断题(对打√,错打 ×,每题 5 分,共 5 题,25 分)
第 1 题
在 C++中,可以使用 for(int i=0; i<5; i) 循环 5 次,i 的值从 0 到 4。()
✅ 正确答案:√
解析:for 循环执行 5 次,i 取 0、1、2、3、4。
第 2 题
数组 {1, 2, 3} 和 {3, 2, 1} 是相同的数组,因为元素一样。()
✅ 正确答案:×
解析:数组元素顺序不同,是不同数组。
第 3 题
在 C++ 中,递归函数如果没有正确的终止条件,会导致栈溢出,程序崩溃。()
✅ 正确答案:√
解析:无出口递归会无限调用,造成栈溢出。
第 4 题
在 “灯笼矩阵” 中,若想实现 “奇数行亮红灯,偶数行亮绿灯”,可通过 if(row % 2 == 1) 来判断。()
✅ 正确答案:√
解析:row%2==1 可正确判断奇数行。
第 5 题
声明 const int MAX_SPEED = 100; 后,任何试图修改它的操作都会导致编译错误。()
✅ 正确答案:√
解析:const 常量不可修改,否则报错。
加入工作室
学习编程知识
锻炼逻辑思维
让自己变得更优秀
欢迎同学们组队
学习 C++
感受不一样的程序人生
成为新时代的领军人物
扫码关注
感谢您关注
信奥科创工作室
官方微信

互动支持
期待您的分享 点赞 在看