欢迎光临
我们一直在努力

2026年全国青少年信息素养大赛算法应用主题赛(C++赛项-复赛模拟卷6:文末附答案)

2026年全国青少年信息素养大赛算法应用主题赛(C++赛项-复赛模拟卷6:文末附答案)

在这里插入图片描述

5道单选+5道多选+4道编程


一、单选题(每题2分,共5题)
  • 在C++中,下列哪个循环结构在条件判断之前至少执行一次循环体? A. for 循环  B. while 循环  C. do-while 循环  D. if 语句

  • 已知 int a=5, b=3,执行 a += b++ 后,a 和 b 的值分别是( )。 A. a=8, b=4  B. a=8, b=3  C. a=9, b=4  D. a=9, b=3

  • 下列哪个是判断一个正整数 n 是否为质数的最高效代码片段(仅针对算法复杂度)? A.

    for(int i=2; i<n; i++) if(n%i==0) return false;

    B.

    for(int i=2; i*i<=n; i++) if(n%i==0) return false;

    C.

    for(int i=2; i<=n; i++) if(n%i==0) return false;

    D.

    for(int i=2; i<=n/2; i++) if(n%i==0) return false;

  • 使用二分查找算法在有序数组 {2,5,8,12,15,20,25} 中查找元素 15,需要比较的次数是( )。 A. 1  B. 2  C. 3  D. 4

  • 十进制数 47 转换成二进制数是( )。 A. 101111  B. 111011  C. 110111  D. 111101


  • 二、多选题(每题4分,共5题,错选漏选均不得分)
  • 以下关于递归算法的说法,正确的有( )。 A. 递归算法必须有一个明确的终止条件(递归基) B. 递归调用会占用系统的栈空间,深度过大可能导致栈溢出 C. 所有递归算法都可以用循环+栈的方式非递归实现 D. 递归算法的时间复杂度一定高于非递归版本
  • 关于 DFS(深度优先搜索)和 BFS(广度优先搜索),下列说法正确的有( )。 A. DFS 通常使用栈(显式或递归隐式栈)实现 B. BFS 通常使用队列实现 C. BFS 适合求无权图的最短路径 D. 在网格中从左上角到右下角的所有路径数量问题(只能向下或向右),两种搜索都能求解
  • 以下排序算法中,平均时间复杂度为 O(n log n) 的有( )。 A. 冒泡排序  B. 选择排序  C. 快速排序  D. 归并排序
  • 以下排序算法中,属于稳定排序的有( )。 A. 归并排序  B. 快速排序  C. 冒泡排序  D. 选择排序
  • 二分查找算法要求待查找的数据结构必须满足( )。 A. 有序  B. 随机存取(如数组)  C. 元素均为整数  D. 链式存储

  • 三、编程题(共70分)
    编程题1:丝路里程计算(15分)

    题目描述 丝绸之路沿线有 N 个城市,编号 1 ~ N。已知相邻城市间的距离(第 i 个距离表示城市 i 到城市 i+1 的距离)。商队从城市 L 出发前往城市 R(L < R),请计算需要行进的总路程。

    输入格式 第一行一个整数 N (2 ≤ N ≤ 100)。 第二行 N-1 个正整数,表示相邻城市的距离(单位:里)。 第三行两个整数 L, R (1 ≤ L < R ≤ N)。

    输出格式 输出一个整数,表示从 L 到 R 的总路程。

    样例输入

    5
    10 20 30 40
    2 5

    样例输出

    90

    样例解释:城市2→3(20里) + 3→4(30里) + 4→5(40里) = 90里。


    编程题2:商队最长三日里程(15分)

    题目描述 商队在丝绸之路上连续记录了 N 天的每日行进里程(正整数)。请找出连续3天中总里程最大的值,并输出该最大值。 如果 N < 3,则输出 0。

    输入格式 第一行一个整数 N (1 ≤ N ≤ 1000)。 第二行 N 个正整数,表示每天的里程(单位:里,≤ 10000)。

    输出格式 输出一个整数,表示最大的连续3天里程之和。若不足3天,输出 0。

    样例输入1

    text

    5
    30 40 20 50 60

    样例输出1

    text

    130

    解释:连续三天组合: 30+40+20=90,40+20+50=110,20+50+60=130 → 最大为130。

    样例输入2

    text

    2
    10 20

    样例输出2

    text

    0

    解释:不足3天,输出0。


    编程题3:货物清单统计(20分)

    题目描述 商队在丝绸之路上经过多个集市,记录下了交易的货物清单。每条记录格式为 "货物名称:数量"。现在需要统计每种货物的总数量,并按照货物名称的字典序输出。

    输入格式 第一行一个整数 n (1 ≤ n ≤ 100),表示记录条数。 接下来 n 行,每行一个字符串,格式为 "name:num",其中 name 为不含空格的小写字母串(长度 ≤ 20),num 为 1~1000 的整数。

    输出格式 若干行,每行输出 "name total",按 name 的字典序(ASCII)从小到大排列。

    样例输入

    5
    silk:10
    tea:5
    silk:8
    spice:12
    tea:3

    样例输出

    silk 18
    spice 12
    tea 8


    编程题4:丝绸之路寻路(20分)

    题目描述 商队需要从丝绸之路地图的左上角 (1,1) 走到右下角 (n,m)。地图是一个 n 行 m 列的网格,每个格子是 0(可通行)或 1(障碍)。商队只能向下或向右移动。请问一共有多少条不同的路径? (注:障碍格子不能经过,左上角和右下角保证为可通行)

    输入格式 第一行两个整数 n, m (1 ≤ n, m ≤ 8)。 接下来 n 行,每行 m 个整数(0 或 1),表示地图。

    输出格式 输出一个整数,表示不同路径的总数。若不存在可行路径,输出 0。

    样例输入

    3 3
    0 0 0
    0 1 0
    0 0 0

    样例输出

    2

    解释:两条路径分别为:右→右→下→下 和 下→下→右→右;中间障碍物 (2,2) 阻挡了其他路线。


    答案与解析

    一、单选题
  • C do-while 循环先执行一次循环体,再判断条件,故至少执行一次。for 和 while 可能一次都不执行。
  • A b++ 是先使用 b 的值(3),再加1。所以 a += 3 → a = 5+3=8,然后 b 变成 4。
  • B 判断质数只需检查 2 到 √n 的因子,复杂度 O(√n)。A、C、D 效率更低。
  • B 二分查找过程:
    • 初始区间 [0,6],mid=3(值12),15>12,左区间 [4,6]
    • mid=5(值20),15<20,右区间 [4,4]
    • mid=4(值15),命中。共比较3次(下标3、5、4)。注意比较次数指元素比较次数,通常包括最后一次成功比较,所以是3次。但常见题中计数方式略有差异,此处严谨答案应为 3。 若按每次二分算一次比较:第一次与12比,第二次与20比,第三次与15比 → 3次。选 C。
  • A 47 二进制:32+8+4+2+1 = 101111(32+15=47,15=1111,所以101111)。

  • 二、多选题
  • ABC A 正确,递归必须终止条件;B 正确,递归深度过大导致栈溢出;C 正确,所有递归可转为迭代(如手动栈);D 错误,递归可能因重复计算而更低效(如斐波那契),但并非绝对。
  • ABCD 全部正确。D 项中网格路径数量问题(只能下/右)可用 DFS 枚举所有路径,也可用 BFS 统计方案数(但通常 DP 更佳),二者均可求解。
  • CD 冒泡、选择排序平均 O(n²);快速排序平均 O(n log n),最坏 O(n²);归并排序稳定 O(n log n)。
  • AC 归并排序和冒泡排序稳定;快速排序和选择排序不稳定。
  • AB 二分查找要求序列有序且支持随机存取(如数组),链表无法高效实现二分。

  • 三、编程题参考代码及思路
    编程题1:丝路里程计算
    思路分析:
    • 用数组存储距离,从 L 到 R-1 累加对应下标即可。
    代码实现:

    #include <bits/stdc++.h>
    using namespace std;

    int N, L, R, dist[110]; // dist[110]: 存储相邻城市间的距离,下标从1开始,dist[i] 表示城市i到城市i+1的距离

    int main() {
    cin >> N;
    for (int i = 1; i < N; i++) {
    cin >> dist[i]; // 依次读入每个路段长度
    }
    cin >> L >> R;

    // 计算从 L 到 R 的总路程
    int ans = 0; // 累计总路程,初始化为0
    // 累加从第 L 段到第 R-1 段的距离(因为城市 i 到 i+1 对应 dist[i])
    // 当 L=2,R=5 时,需要累加 dist[2] + dist[3] + dist[4]
    for (int i = L; i < R; i++) {
    ans += dist[i]; // 将每一段距离加到 ans 中
    }

    cout << ans;
    return 0;
    }


    编程题2:商队最长三日里程
    思路分析:
    • 枚举所有起始位置,计算三个数的和,打擂台更新最大值。
    代码实现:

    #include <bits/stdc++.h>
    using namespace std;
    int N, a[1010];
    int main() {
    cin >> N;
    for (int i = 1; i <= N; i++) {
    cin >> a[i];
    }

    // 处理不足三天的情况
    if (N < 3) {
    cout << 0 << endl;
    return 0;
    }

    int maxSum = 0;// 记录最大和
    // 枚举起始位置 i :1 到 N-2(保证 i, i+1, i+2 都在范围内)
    for (int i = 1; i <= N 2; i++) {
    // 计算从第 i 天开始连续三天的总里程
    int currentSum = a[i] + a[i+1] + a[i+2];

    // 打擂台更新最大值
    if (currentSum > maxSum) {
    maxSum = currentSum;
    }
    }

    cout << maxSum;
    return 0;
    }

    编程题3:货物清单统计
    思路分析:
    • 使用 map<string, int> 自动按字典序排序并累加数量。
    代码实现:

    #include <bits/stdc++.h>
    using namespace std;

    int main() {
    int n; // 记录条数
    cin >> n; // 读取 n

    map<string, int> m;// 使用 map 存储每种货物的名称及其累计数量,自动按名称字典序排序

    string s; // 临时存储每行输入
    while (n) { // 循环 n 次,读取 n 条记录
    cin >> s; // 读取一行,格式如 "silk:10"

    // 查找冒号的位置
    int pos = s.find(':');
    // 提取货物名称(冒号前的子串)
    string name = s.substr(0, pos);
    // 提取数量(冒号后的子串),并转换为整数
    int num = stoi(s.substr(pos + 1));

    // 累加数量:如果 name 不存在,map 会自动创建键并初始化为 0,然后加上 num
    m[name] += num;
    }

    // 遍历 map,此时已按 name 的字典序(ASCII 顺序)自动排序
    for (auto p : m) {
    // 输出货物名称和累计总数量,中间用空格分隔
    cout << p.first << " " << p.second << endl;
    }

    return 0;
    }

    编程题4:丝绸之路寻路
    思路分析:
    • n和m均小于等于8,可使用深度优先搜索(DFS)递归遍历所有向下/向右移动的路径,遇到障碍或越界回溯。 (备注:当n和m较大时,可以使用DP)
    代码实现:

    #include <bits/stdc++.h>
    using namespace std;

    int n, m; // n:地图行数,m:地图列数
    int ans = 0; // 记录从(1,1)到(n,m)的不同路径总数
    int a[10][10]; // 地图数组,a[i][j]==0表示可通行,==1表示障碍物

    // 深搜函数
    void dfs(int x, int y) {
    // 递归终止条件:如果已经到达右下角 (n, m)
    if (x == n && y == m) {
    ans++; // 找到一条合法路径,路径数加1
    return; // 返回上一层继续探索其他路径
    }
    // 尝试向下移动:如果下方格子存在(x+1 <= n)且不是障碍(a[x+1][y] == 0)
    if (x + 1 <= n && a[x+1][y] == 0) {
    dfs(x + 1, y); // 递归调用,进入下方格子
    }
    // 尝试向右移动:如果右方格子存在(y+1 <= m)且不是障碍(a[x][y+1] == 0)
    if (y + 1 <= m && a[x][y+1] == 0) {
    dfs(x, y + 1); // 递归调用,进入右方格子
    }
    }

    int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
    cin >> a[i][j]; // a[i][j] 为 0 或 1
    }
    }
    dfs(1, 1);// 从左上角 (1,1) 出发开始DFS搜索
    cout << ans;// 输出结果
    return 0;
    }

    完整复赛备赛资料(助力你冲刺一等奖!)

    2026年全国青少年信息素养大赛算法应用主题赛C++样题及答案解析

    https://noicsp.blog.csdn.net/article/details/159561154?spm=1011.2415.3001.5331

    2026年全国青少年信息素养大赛算法应用主题赛(C++赛项复赛模拟卷1:文末附答案)

    https://noicsp.blog.csdn.net/article/details/159650568?spm=1011.2415.3001.5331

    2026年全国青少年信息素养大赛算法应用主题赛(C++赛项复赛模拟卷2:文末附答案)

    https://noicsp.blog.csdn.net/article/details/159650622?spm=1011.2415.3001.5331

    2026年全国青少年信息素养大赛算法应用主题赛(C++赛项复赛模拟卷3:文末附答案)

    https://noicsp.blog.csdn.net/article/details/159822116?spm=1011.2415.3001.5331

    2026年全国青少年信息素养大赛算法应用主题赛(C++赛项复赛模拟卷4:文末附答案)

    https://noicsp.blog.csdn.net/article/details/159823816?spm=1011.2415.3001.5331

    2026年全国青少年信息素养大赛算法应用主题赛(C++赛项复赛模拟卷5:文末附答案)

    https://noicsp.blog.csdn.net/article/details/160130468?spm=1011.2415.3001.5331

    2025年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++小学组试卷1:带解析)(7月6日试卷)

    https://noicsp.blog.csdn.net/article/details/154933920?spm=1011.2415.3001.5331

    2025年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++初中组试卷1:带解析)(7月6日试卷)

    https://noicsp.blog.csdn.net/article/details/155087249?spm=1011.2415.3001.5331

    2025年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++小学组试卷2:带解析)(7月13日试卷)

    https://noicsp.blog.csdn.net/article/details/155130012?spm=1011.2415.3001.5331

    2025年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++初中组试卷2:带解析)(7月13日试卷)

    https://noicsp.blog.csdn.net/article/details/155130092?spm=1011.2415.3001.5331

    2024年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++小学组:带解析)

    https://noicsp.blog.csdn.net/article/details/147814614

    2023年全国青少年信息素养大赛复赛真题(C++智能算法复赛真题:带解析)

    https://blog.csdn.net/weixin_66461496/article/details/147968677


    关注老师的专栏,查看完整版全国青少年信息素养大赛C++备赛资料(初赛+复赛):

    https://blog.csdn.net/weixin_66461496/category_12969975.html

    相关课程《全国青少年信息素养大赛C++复赛真题试卷及答案解析》(视频课)

    https://www.bilibili.com/cheese/play/ep2532538


    各种学习资料,助力大家一站式学习和提升!!!

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    cout<<"########## 一站式掌握信奥赛知识! ##########";
    cout<<"############# 冲刺信奥赛拿奖! #############";
    cout<<"###### 课程购买后永久学习,不受限制! ######";
    return 0;
    }

    【秘籍汇总】(完整csp信奥赛C++学习资料):

    1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

    https://edu.csdn.net/lecturer/7901 点击跳转

    在这里插入图片描述

    2、CSP信奥赛C++竞赛拿奖视频课:

    https://edu.csdn.net/course/detail/40437 点击跳转 在这里插入图片描述

    3、csp信奥赛高频考点知识详解及案例实践:

    CSP信奥赛C++动态规划: https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

    CSP信奥赛C++标准模板库STL: https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

    信奥赛C++提高组csp-s知识详解及案例实践: https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转

    4、csp信奥赛冲刺一等奖有效刷题题解:

    信奥赛C++普及组CSP-J一等奖通关刷题题单及题解: https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

    信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

    信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新): https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转

    5、GESP C++考级真题题解:

    在这里插入图片描述

    GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

    在这里插入图片描述

    GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

    在这里插入图片描述 GESP(C++ 七级+八级)真题题解(持续更新): https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转

    · 文末祝福 ·

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    cout<<"跟着王老师一起学习信奥赛C++";
    cout<<" 成就更好的自己! ";
    cout<<" csp信奥赛一等奖属于你! ";
    return 0;
    }

    在这里插入图片描述

    赞(0)
    未经允许不得转载:171主机测评 » 2026年全国青少年信息素养大赛算法应用主题赛(C++赛项-复赛模拟卷6:文末附答案)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址