2026年全国青少年信息素养大赛复赛模拟卷
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
一、单项选择题(每题 2 分)
1. 红军在长征途中为高度保密核心行军路线,防止作战情报被敌方截获,情报部门对路线代号字符串采用分段截取、子串逆序、后缀截取、密文拼接的多层加密策略。以下 C++ 代码严格按照该加密规则实现,请阅读程序,选择运行后输出的正确密文结果?
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string route = "CHANGZHENG2026";
string a = route.substr(3, 4);
reverse(a.begin(), a.end());
string b = route.substr(route.size() - 5, 4);
cout << a + b << endl;
return 0;
}
{{ select(1) }}
- NAHZ0262
- GNAH202
- ZHNG0262
- HZGNG202
2. 红军在四渡赤水经典战役中,按照严格的作战计划,每 4 天执行一次关键行军或转移任务。为复盘作战部署与行军规律,现需要统计:从第 1 天至第 25 天的所有行军日期中,同时满足能被 6 整除、且天数数字大于 12 的合法行军任务总次数。请阅读以下 C++ 统计程序,选择程序运行后的正确输出结果?
#include <iostream>
using namespace std;
int main() {
int cnt = 0;
for (int i = 1; i < 26; i += 4) {
if (i % 6 == 0 && i > 12) cnt++;
}
cout << cnt << endl;
return 0;
}
{{ select(2) }}
- 0
- 1
- 2
- 3
3. 红军长征途中,后勤保障部门需对军需物资进行规范化管理。为确保物资调度精准有序,需对物资编号列表依次执行清理重复编号、插入新物资、整体倒序整理、定位目标物资四项操作。请阅读以下 C++ 程序,该程序完整模拟了上述物资管理流程,最终输出指定物资编号在列表中的下标(索引从 0 开始)。请选择程序运行后的正确结果?
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> goods = {7,4,11,4,16,21,25};
auto it = find(goods.begin(), goods.end(), 4);
if (it != goods.end()) goods.erase(it);
goods.insert(goods.begin() + 3, 14);
reverse(goods.begin(), goods.end());
cout << find(goods.begin(), goods.end(), 11) - goods.begin() << endl;
return 0;
}
{{ select(3) }}
- 3
- 4
- 5
- 6
4. 红军长征翻越夹金山等多座高寒雪山,山路崎岖、风雪恶劣,后勤部门依据实地行军数据总结出里程递推规则,采用递归算法核算单日行军当量里程。规则规定:行军第 1 天的折算里程记为 1,第 2 天折算里程记为 2;从第 3 天起,当日折算里程 = 前一日里程 + 前日前两天里程的 3 倍。现借助 C++ 递归函数求解行军第 7 天的折算总里程,请阅读代码,选出程序运行输出结果?
#include <iostream>
using namespace std;
int miles(int x) {
if (x <= 1) return 1;
if (x == 2) return 2;
return miles(x - 1) + 3 * miles(x - 2);
}
int main() {
cout << miles(7) << endl;
return 0;
}
{{ select(4) }}
- 109
- 137
- 229
- 269
5. 红一方面军与红二方面军即将胜利会师,指挥部整理两支队伍在册战士编号。为区分跨队伍重复人员与单兵独有人员,需要统计仅隶属于单独一支部队、不同时出现在两支队伍的独有战士编号总个数。程序利用集合特性筛选独有数据,请阅读 C++ 代码,选出程序运行后的输出答案?
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> arm1 = {2,5,8,11,14,17};
set<int> arm2 = {5,11,17,20,23,26};
int cnt = 0;
for (int x : arm1) if (!arm2.count(x)) cnt++;
for (int x : arm2) if (!arm1.count(x)) cnt++;
cout << cnt << endl;
return 0;
}
{{ select(5) }}
- 4
- 6
- 8
- 10
二、多项选择题(每题 4 分)
6. 部队宣传科借助程序批量生成长征主题宣传标语,通过字符串拼接、固定字符截取、分隔符插入等方式组合文案。下方 C++ 代码实现标语拼接逻辑,请分析代码运行效果,说法正确的有(多选)?
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1 = "红军长征", s2 = "艰苦奋斗";
string out = s1 + s1 + "|" + string(1, s2[0]) + s2[2];
cout << out << endl;
return 0;
}
{{ multiselect(6) }}
- 输出内容包含"红军长征红军长征"
- 输出内容包含分隔符"|"
- 输出内容包含"艰奋"
- 输出字符串总长度为 13
7. 部队整编期间,后勤管理人员借助程序随机生成队伍在册战士编号,编号取值范围限定在 25~90,且编号数值间隔固定为 7,用于人员档案登记。阅读生成代码,对编号生成规律分析无误的选项有(多选)?
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int main() {
srand(time(0));
int n = 25 + rand() % ((90 - 25) / 7 + 1) * 7;
cout << n << endl;
return 0;
}
{{ multiselect(7) }}
- 可能输出 28
- 可能输出 84
- 不可能输出 91
- 输出的数字一定是奇数
8. 长征行军途中,前线送来的军需物资登记编号重复杂乱,后勤整理台账要求:剔除重复编号,同时严格保留物资最先入库的原始先后顺序。下列编程处理思路中,可以满足该整理要求的实现方案有(多选)?
{{ multiselect(8) }}
- 直接使用 set 容器自动去重
- 遍历 vector,未出现过的元素加入新容器
- 使用 map 标记元素是否已出现,实现有序去重
- 先排序再去重
9. 某支红军队伍连续开展 3 天长途行军,每日行军路程统一划分为 5 个分段。工作人员采用双层循环代码分段累加全周期总里程,结合代码运行逻辑,描述正确的选项有(多选)?
#include <iostream>
using namespace std;
int main() {
int total = 0;
for (int d = 0; d < 3; d++) {
for (int s = 1; s <= 5; s++) {
total += s;
}
}
cout << total << endl;
return 0;
}
{{ multiselect(9) }}
- 外层循环一共执行 3 次
- 内层循环一共执行 5 次
- 两层循环总共执行 15 次
- 最终输出的 total 值为 45
10. 结合长征路况变化规律,用迭代递推公式模拟单日里程增长,行军初始基准里程设定为 3,循环迭代共计 4 次。阅读代码,对每次迭代后的变量数值描述正确的有(多选)?
#include <iostream>
using namespace std;
int main() {
int dis = 3;
for (int i = 0; i < 4; i++) {
dis = dis * 4 - 2;
}
cout << dis << endl;
return 0;
}
{{ multiselect(10) }}
- 第 1 次循环结束后 dis = 10
- 第 2 次循环结束后 dis = 38
- 第 3 次循环结束后 dis = 150
- 程序最终输出结果为 598