2026年全国青少年信息素养大赛复赛真题算法应用主题赛C初中组带解析7月11日试卷二【文末附答案和解析】一、单选题1. 丝路商队用数组goods记录货箱的货物价值以下代码记录了部分货箱的价值下面程序的输出结果是 intgoods[6]{5,8,3};goods[3]10;goods[1]goods[0]2;coutgoods[1] goods[3] goods[4];A、7 10 随机值B、7 10 0C、8 10 0D、10 10 02. 丝路商队在穿越荒漠时每次行进会消耗 2 份补给。变量x表示当前剩余补给数量变量cnt表示补给消耗次数。下面代码的输出结果是 intx5,cnt0;while(x0){xx-2;cnt;}coutcnt;A、1B、2C、3D、43. 敦煌莫高窟数字展厅中有一块 ( 3 \times 3 ) 的壁画区域其各位置上的编号被存储在一个二维数组a中。程序需要统计该数组左下三角区域含主对角线的所有编号之和。以下程序执行后输出结果是 inta[3][3]{{1,2,3},{4,5,6},{7,8,9}};intsum0;for(inti0;i3;i){for(intj0;ji;j){suma[i][j];}}coutsum;A. 45B. 15C. 19D. 344. 某支从长安出发的丝路商队在 8 个驿站进行了驼队数量单位支的清点并将清点结果记录在数组a中。商队管事想统计哪种规模的驼队出现得最频繁以便规划下次出行的随行规模。下面程序的输出结果是 intmain(){inta[8]{5,2,8,5,2,5,8,2};intc[10]{0};for(inti0;i8;i){c[a[i]];}intm0,v0;for(inti0;i10;i){if(c[i]m){mc[i];vi;}}coutv m;return0;}A、52B、23C、53D、825. 丝绸之路上的驿站采用接力传递的方式运送物资。下面代码模拟了该运送过程该代码的输出结果是 intschedule(intn){inti;if(n5)returnn;for(i1;i5;i)if(schedule(n-i)0)returni;return-1;}intmain(){intn16;coutschedule(n)endl;return0;}A. -1B. 2C. 3D. 4二、多选题6. 丝路货物管理系统需要使用数组记录货箱重量、瓷器破损数量、驿站编号等数据。以下关于数组的描述正确的有 A、定义数组时数组长度通常使用常量表达式B、在 C 中可以将一个数组直接赋值给另一个同类型的数组下面代码合法inta[5]{1,2,3,4,5};intb[5]a;C、整型数组可以在定义时用花括号初始化未指定初值的元素会自动初始化为 0D、数组下标从 0 开始访问越界可能导致运行时错误7. 丝路货物系统需要对商品编号、瓷器破损率、驿站优先级等数据进行排序。下列关于排序稳定性的说法正确的是 A、快速排序是稳定的B、选择排序是不稳定的C、插入排序是不稳定的D、冒泡排序是稳定的8. 丝路商队穿越茫茫大漠沿途设有编号 1 至 100 的驿站。管事采用二分查找每次取中间驿站比对缩小查找范围。程序如下选择正确选项 。intmain(){intt,cnt0;cint;intl1,r100,mid;while(true){cnt;mid(lr)/2;if(midt){coutcnt;break;}elseif(midt)lmid1;elsermid-1;}return0;}A、当目标驿站编号 t 1 时程序输出 7B、当目标驿站编号 t 64 时程序输出 7C、输入一个 1~100 的驿站编号该算法最多查找 7 次必能找到目标驿站D、假设驿站编号为 1 至 1000将程序中 r 的初始值修改为 1000然后再输入一个 1~1000 的驿站编号该算法最多查找 11 次必能找到目标驿站9. 丝路贸易账本中可能出现数值极大的金额数据普通整数类型无法存储需要采用高精度算法进行处理。给定两个大数以字符串形式输入分别存放在字符串变量 s1、s2 中随后将两个字符串数字转换为整数存入整型数组 a、b完成运算后最终计算结果存入整型数组 c。以下关于高精度乘法的说法正确的有 A.需要将两个字符串倒序存储在整型数组中例如将 s1 倒序存入数组 aintlenas1.length();for(inti0;ilena-1;i){a[i]s1[lena-1-i]-0;}B.处理数组 c 进位时下面代码能获得正确结果for(inti0;ilenc-1;i){c[i1]c[i1]c[i]%10;c[i]c[i]/10;}C.下面代码能去掉数组 c 的前导零得到正确的 lenclenc 指数组 c 的当前长度while(c[lenc-1]0lenc1){lenc--;}D.模拟乘法时下面代码能使得数组 c 保存正确计算结果for(inti0;ilena-1;i){for(intj0;jlenb-1;j){c[ij]c[ij]*10c[ij]%10;}}三、编程题1. 骆驼运粮问题题目描述丝绸之路上的商队出发前需要将粮袋分配给骆驼运输。规定每头骆驼最多只能携带 m 袋粮食。已知总共有 n 袋粮食请计算至少需要多少头骆驼可以将所有粮袋全部运走。注意即使最后头骆驼没有装满也需要单独计算一头。输入格式第一行一个整数 n代表粮袋总数第二行一个整数 m代表单头骆驼最大运载粮袋数量输出格式输出一个整数代表运输所有粮食需要的最少骆驼数量。输入样例118 4输出样例152. 水仙花数题目描述商队准备穿越沙漠时会先给参与行进的骆驼编上三位数编号。为了让队伍排列更整齐领队希望先找出一批满足特殊规律的编号。如果一个三位数满足它的百位、十位、个位三个数字各自立方后相加结果正好等于这个三位数本身那么这个编号就视为符合要求。请你按从小到大的顺序输出从 m 到 n 之间所有符合要求的编号。例如153 1×1×1 5×5×5 3×3×3 1 125 27 153正好等于自身符合要求。输入格式第一行一个整数 m表示起始编号。第二行一个整数 n表示结束编号。输出格式按从小到大的顺序逐行输出所有满足条件的编号。输入样例1100 200输出样例11533. 米字矩阵题目描述在丝绸之路石窟艺术的虚拟展示中设计师需要生成一个类似米字的辅助纹样用来表示藻井图案的对称结构。为了方便程序生成系统将这种对称结构抽象为一个 N × N 的字符矩阵。给定一个奇数 N请你输出一个 N × N 的米字矩阵。具体规则如下主对角线为星号*副对角线为星号*中间一行为星号*中间一列为星号*其余位置为减号-输入格式一行一个整数 N。输出格式输出一个 N × N 的米字矩阵。请严格按格式要求输出不要擅自添加空格等任何符号。你应该恰好输出 N 行每行除了换行符外恰好包含 N 个字符。输入样例15输出样例1*-*-* -***- ***** -***- *-*-*4. 绿洲灌溉序列优化题目描述丝绸之路沿线有 n 个绿洲需要依次灌溉。已知第 i 个绿洲的灌溉需要耗时 a_i。灌溉设备从 0 时刻开始工作每次只能灌溉一个绿洲完成后才能开始下一个。假设灌溉绿洲的总完成时间为每个绿洲完成灌溉的时刻之和。例如灌溉两个绿洲分别需要耗时 10 和 20若先灌溉需要耗时 10 的绿洲则完成时刻分别为 10 和 30总时间为 40若先灌溉需要耗时 20 的绿洲则完成时刻分别为 20 和 30总时间为 50请你安排灌溉顺序使得总完成时间最小并输出该最小总完成时间。输入格式第一行两个整数 n, R1表示绿洲数量和生成数列的首项。第 i 个绿洲的灌溉时间a i a_iai (R i R_iRi% 200) 1其中数列 R 定义如下0 R1 100003 给定对于 i 1R i R_iRi (R i − 1 R_{i-1}Ri−1× 37 127) % 100003输出格式一个整数表示最小的总完成时间。输入样例110 2输出样例11512答案与解析一、单选题1. 答案B解析int goods[6] {5, 8, 3};初始化数组未赋值的元素自动为 0。所以goods[4]为 0。goods[3] 10;goods[1] goods[0] 2;→goods[1] 5 2 7。输出goods[1](7)、goods[3](10)、goods[4](0)结果为7 10 0。2. 答案C解析初始x5,cnt0。循环执行x5-23,cnt1x3-21,cnt2x1-2-1,cnt3循环结束输出cnt3。3. 答案C解析程序统计的是a[i][j]其中j i即主对角线下方的元素不包括主对角线。遍历过程i0: j0 不执行i1: j0 → sum a[1][0] 4i2: j0 → sum a[2][0] 7, j1 → sum a[2][1] 8总 sum 4 7 8 19。4. 答案A解析数组a中元素5, 2, 8, 5, 2, 5, 8, 2。统计频次c[5]3,c[2]3,c[8]2。循环寻找最大频次c[i] mi2: c[2]3 0, m3, v2。i5: c[5]3 3? 否不大于。因此 v2, m3。输出2 3。5. 答案D解析递归函数schedule(n)在 n5 时尝试 i1…5若schedule(n-i) 0则返回 i否则返回 -1。计算得schedule(6) -1schedule(7) 1schedule(8) 2schedule(9) 3schedule(10) 4schedule(11) 5schedule(12) -1以此类推每 6 个数一循环。16 mod 6 4对应 schedule(16) 4。因此选D。二、多选题6. 答案ACD解析A. 正确。数组长度必须是编译时常量。B. 错误。C 中数组不能直接赋值需用循环或memcpy。C. 正确。如int a[5] {1,2};未赋值的元素为0。D. 正确。数组下标从0开始越界访问是未定义行为。7. 答案BD解析A. 错误。快速排序通常不稳定。B. 正确。选择排序不稳定如 [2a, 2b, 1] 排序后可能变为 [1, 2b, 2a]。C. 错误。插入排序是稳定的。D. 正确。冒泡排序是稳定的只交换相邻逆序元素。8. 答案BCD解析A. 错误。t1 时查找次数为 6不是 7。B. 正确。t64 时查找次数为 7。C. 正确。1~100 中二分查找最多 7 次ceil(log2(100)) 7。D. 正确。1~1000 中二分查找最多 10 次但 11 次是保守上界也正确。9. 答案AC解析A. 正确。倒序存储是模拟手算乘法的标准步骤。B. 错误。进位处理逻辑错误正确应为c[i1]c[i]/10;c[i]%10;C. 正确。去除前导零的标准方法同时保留至少一位。D. 错误。模拟乘法应为c[ij]a[i]*b[j];然后再统一处理进位。三、编程题1. 骆驼运粮问题思路分析每头骆驼最多运m袋总共有n袋需要的最少骆驼数即n除以m的向上取整结果。直接用除法n / m得到的是向下取整如果n不能被m整除则还需要额外一头骆驼来装剩余的粮食。因此先计算基本商n / m再用if判断余数n % m是否为 0若余数为 0则答案就是商若余数不为 0则答案 商 1。样例n18, m4商18/44余数18%42 ≠ 0所以答案415符合输出。代码实现#includebits/stdc.husingnamespacestd;intmain(){intn,m;cinnm;intansn/m;// 先求向下取整的商if(n%m!0){// 如果余数不为0ansans1;// 需要再加一头骆驼}coutans;return0;}2. 水仙花数思路分析题目本质是寻找区间[m, n]内的所有“水仙花数”三位数自幂数。对于一个三位数x其百位、十位、个位分别为百位x / 100十位x / 10 % 10个位x % 10判断条件百位³ 十位³ 个位³ x若满足则输出x每行一个。代码实现#includebits/stdc.husingnamespacestd;intmain(){intm,n;cinmn;for(intxm;xn;x){// 遍历区间每个数intax/100;// 百位intbx/10%10;// 十位intcx%10;// 个位if(a*a*ab*b*bc*c*cx){// 水仙花数判定coutxendl;// 输出符合条件的数}}return0;}3. 米字矩阵思路分析矩阵大小为N × N用双重循环遍历每一个位置(i, j)i为行j为列均从 0 开始。四个需要输出*的条件主对角线i j副对角线i j N - 1中间行i N / 2中间列j N / 2其他位置输出-。每输出完一行后换行。代码实现#includebits/stdc.husingnamespacestd;intmain(){intN;cinN;intmN/2;// 中间行/列索引for(inti0;iN;i){// 行遍历for(intj0;jN;j){// 列遍历if(ij||ijN-1||im||jm){// 判断是否为*位置cout*;// 输出星号}else{cout-;// 输出减号}}coutendl;// 每行换行}return0;}4. 绿洲灌溉序列优化思路分析问题本质给定 n 个耗时任务安排顺序使所有任务完成时刻之和最小。贪心策略按耗时从小到大排序最短作业优先因为对于任意两个耗时 a ≤ b先 a 后 b 的总完成时间为 2ab先 b 后 a 为 2ba显然前者更小所以全局最优就是升序排列。数据生成通过递推式R i R_iRi (R i − 1 R_{i-1}Ri−1× 37 127) % 100003 生成数列再计算a i a_iai (R i R_iRi% 200) 1。实现细节排序区间为a1到an1。累加时用t记录当前已完成的总耗时即下一个任务的完成时刻累加到s中即为总完成时间。结果可能超过int范围故t和s使用long long。代码实现#includebits/stdc.husingnamespacestd;intn,R1;inta[100010];intmain(){cinnR1;longlongRR1;for(inti1;in;i){// 从1开始生成a[1]~a[n]a[i](R%200)1;// 计算当前绿洲耗时R(R*37127)%100003;// 递推下一个R值}sort(a1,an1);// 对a[1]~a[n]升序排序longlongt0,s0;// t:当前累计耗时, s:总完成时间for(inti1;in;i){// 按排序后的顺序计算ta[i];// 当前任务完成时刻st;// 累加到总完成时间}couts;// 输出最小总完成时间return0;}关注老师的专栏查看完整版全国青少年信息素养大赛C备赛资料初赛复赛https://blog.csdn.net/weixin_66461496/category_12969975.html相关课程《全国青少年信息素养大赛C初赛真题试卷及答案解析》视频课https://www.bilibili.com/cheese/play/ss447406764相关课程《全国青少年信息素养大赛C复赛真题试卷及答案解析》视频课https://www.bilibili.com/cheese/play/ep2532538各种学习资料助力大家一站式学习和提升#includebits/stdc.husingnamespacestd;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 点击跳转https://edu.csdn.net/course/detail/41081 点击跳转3、csp信奥赛高频考点知识详解及案例实践CSP信奥赛C动态规划https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转CSP信奥赛C标准模板库STLhttps://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 点击跳转· 文末祝福 ·#includebits/stdc.husingnamespacestd;intmain(){cout跟着王老师一起学习信奥赛C;cout 成就更好的自己 ;cout csp信奥赛一等奖属于你! ;return0;}