A. 2026年全国青少年信息素养大赛复赛模拟卷

    客观题

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

2026年全国青少年信息素养大赛复赛模拟卷

未参加
状态
已结束
规则
XCPC
题目
5
开始于
2026-7-13 14:45
结束于
2026-7-14 0:45
持续时间
10 小时
主持人
参赛人数
7