2026年全国青少年信息素养大赛算法应用主题赛(C++赛项-复赛模拟卷6:文末附答案)
2026/6/9 14:40:09 网站建设 项目流程

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

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


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

  2. 已知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

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

    for(inti=2;i<n;i++)if(n%i==0)returnfalse;

    B.

    for(inti=2;i*i<=n;i++)if(n%i==0)returnfalse;

    C.

    for(inti=2;i<=n;i++)if(n%i==0)returnfalse;

    D.

    for(inti=2;i<=n/2;i++)if(n%i==0)returnfalse;
  4. 使用二分查找算法在有序数组{2,5,8,12,15,20,25}中查找元素15,需要比较的次数是( )。
    A. 1 B. 2 C. 3 D. 4

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


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


答案与解析

一、单选题
  1. C
    do-while循环先执行一次循环体,再判断条件,故至少执行一次。forwhile可能一次都不执行。
  2. A
    b++是先使用 b 的值(3),再加1。所以a += 3→ a = 5+3=8,然后 b 变成 4。
  3. B
    判断质数只需检查 2 到 √n 的因子,复杂度 O(√n)。A、C、D 效率更低。
  4. 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。
  5. A
    47 二进制:32+8+4+2+1 = 101111(32+15=47,15=1111,所以101111)。

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

三、编程题参考代码及思路
编程题1:丝路里程计算
思路分析
  • 用数组存储距离,从LR-1累加对应下标即可。
代码实现:
#include<bits/stdc++.h>usingnamespacestd;intN,L,R,dist[110];// dist[110]: 存储相邻城市间的距离,下标从1开始,dist[i] 表示城市i到城市i+1的距离intmain(){cin>>N;for(inti=1;i<N;i++){cin>>dist[i];// 依次读入每个路段长度}cin>>L>>R;// 计算从 L 到 R 的总路程intans=0;// 累计总路程,初始化为0// 累加从第 L 段到第 R-1 段的距离(因为城市 i 到 i+1 对应 dist[i])// 当 L=2,R=5 时,需要累加 dist[2] + dist[3] + dist[4]for(inti=L;i<R;i++){ans+=dist[i];// 将每一段距离加到 ans 中}cout<<ans;return0;}

编程题2:商队最长三日里程
思路分析:
  • 枚举所有起始位置,计算三个数的和,打擂台更新最大值。
代码实现:
#include<bits/stdc++.h>usingnamespacestd;intN,a[1010];intmain(){cin>>N;for(inti=1;i<=N;i++){cin>>a[i];}// 处理不足三天的情况if(N<3){cout<<0<<endl;return0;}intmaxSum=0;// 记录最大和// 枚举起始位置 i :1 到 N-2(保证 i, i+1, i+2 都在范围内)for(inti=1;i<=N-2;i++){// 计算从第 i 天开始连续三天的总里程intcurrentSum=a[i]+a[i+1]+a[i+2];// 打擂台更新最大值if(currentSum>maxSum){maxSum=currentSum;}}cout<<maxSum;return0;}
编程题3:货物清单统计
思路分析
  • 使用map<string, int>自动按字典序排序并累加数量。
代码实现:
#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;// 记录条数cin>>n;// 读取 nmap<string,int>m;// 使用 map 存储每种货物的名称及其累计数量,自动按名称字典序排序string s;// 临时存储每行输入while(n--){// 循环 n 次,读取 n 条记录cin>>s;// 读取一行,格式如 "silk:10"// 查找冒号的位置intpos=s.find(':');// 提取货物名称(冒号前的子串)string name=s.substr(0,pos);// 提取数量(冒号后的子串),并转换为整数intnum=stoi(s.substr(pos+1));// 累加数量:如果 name 不存在,map 会自动创建键并初始化为 0,然后加上 numm[name]+=num;}// 遍历 map,此时已按 name 的字典序(ASCII 顺序)自动排序for(autop:m){// 输出货物名称和累计总数量,中间用空格分隔cout<<p.first<<" "<<p.second<<endl;}return0;}
编程题4:丝绸之路寻路
思路分析
  • n和m均小于等于8,可使用深度优先搜索(DFS)递归遍历所有向下/向右移动的路径,遇到障碍或越界回溯。 (备注:当n和m较大时,可以使用DP)
代码实现:
#include<bits/stdc++.h>usingnamespacestd;intn,m;// n:地图行数,m:地图列数intans=0;// 记录从(1,1)到(n,m)的不同路径总数inta[10][10];// 地图数组,a[i][j]==0表示可通行,==1表示障碍物// 深搜函数voiddfs(intx,inty){// 递归终止条件:如果已经到达右下角 (n, m)if(x==n&&y==m){ans++;// 找到一条合法路径,路径数加1return;// 返回上一层继续探索其他路径}// 尝试向下移动:如果下方格子存在(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);// 递归调用,进入右方格子}}intmain(){cin>>n>>m;for(inti=1;i<=n;i++){for(intj=1;j<=m;j++){cin>>a[i][j];// a[i][j] 为 0 或 1}}dfs(1,1);// 从左上角 (1,1) 出发开始DFS搜索cout<<ans;// 输出结果return0;}

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

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>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

【秘籍汇总】(完整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>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询