2026年全国青少年信息素养大赛算法应用主题赛C++赛项【决赛】模拟卷3:文末附答案
2026年全国青少年信息素养大赛算法应用主题赛C赛项【决赛】模拟卷3文末附答案一、单选题每题2分共10分在C中执行以下代码后输出的结果是 inta5,b2;doubleca/b;coutc;A. 2.5 B. 2 C. 2.0 D. 编译错误下列关于数组的说法错误的是 A. 数组下标从0开始B. 定义数组时长度可以使用变量如int n; cinn; int a[n];C. 数组名代表数组首地址D. 可以定义string name[50]存储50个名字若定义一个函数int fun(int x)用于计算斐波那契数列的第x项以下哪种实现方式可能导致程序运行时间大幅增加甚至超时 A. 使用for循环迭代 B. 使用递归但不加记忆化 C. 使用数组记录中间结果 D. 使用递推在C中判断字符变量ch是否为大写字母的正确表达式是 A.ch A ch ZB.ch 65 || ch 90C.ch A || ch ZD.A ch Z关于break和continue语句下列说法正确的是 A.continue用于跳出当前整个循环B. 在嵌套循环中break只跳出最内层循环C.break只能用于switch语句中D.continue可以用于switch语句中二、多选题每题4分共20分多选、错选、漏选不得分下列哪些是C中合法的标识符变量名 A._LongMarchB.2thDivisionC.RedArmyD.int关于STL容器下列说法正确的有 A.vector是动态数组支持随机访问B.set中的元素会自动去重并排序C.map可以通过键值对存储数据键可以重复D.pair可以将两个数据组合成一个单元以下哪些算法思想属于以空间换时间的典型应用 A. 桶排序计数排序 B. 递归求阶乘C. 使用数组记录已计算过的斐波那契数列值记忆化搜索 D. 暴力枚举关于结构体下列说法正确的有 A. 结构体中可以包含不同数据类型的成员B. 结构体变量可以直接整体赋值如stu2 stu1;C. 结构体可以作为函数的参数传递D. 结构体不支持嵌套定义阅读以下程序可能的输出结果有 intx0;for(inti1;i10;i){if(i%30)continue;xi;}coutx;A. 55 B. 37 C. 33 D. 45三、编程操作题共70分第1题15分丝路驼队物资调度——贪心思想题目描述在丝绸之路上一支驼队需要运输n批货物翻越沙漠。每批货物有重量w_i。骆驼的最大载重为M。为了最小化运输趟数请计算最少需要多少趟才能把所有货物运完假设货物不可拆分每趟尽可能多装但总重量不能超过M输入格式第一行两个整数 n 和 M分别表示货物批数和最大载重。第二行 n 个整数表示每批货物的重量。输出格式一个整数表示最少趟数。数据范围1 ≤ n ≤ 10001 ≤ M ≤ 100001 ≤ w_i ≤ M。样例输入 5 10 2 5 4 7 1 输出 3解释可一趟装729一趟装549最后一趟装1共3趟第2题15分数字守艺人数位黑洞——模拟题目描述任意给定一个四位数数字不全相同将数字按从大到小排列组成最大数按从小到大排列组成最小数用最大数减去最小数得到一个新数。重复这个过程最终会进入一个循环如6174黑洞。请编写程序输出该四位数变换到第一次出现重复数字时整个变换序列中不同数字的个数。输入格式一个四位整数 x1000 ≤ x ≤ 9999且各位不全相同。输出格式一个整数表示序列中不同数字的个数。样例输入1234 输出4解释4321 - 1234 30878730 - 0378 83528532 - 2358 61747641 - 1467 6174。重复出现6174序列为1234,3087,8352,6174共4个输出4第3题20分智传民韵纹样编码——字符串与递归题目描述壮锦纹样有一种编码规则一个字符串可以按以下方式压缩——将连续重复的子串替换为数字子串。例如aaabbbcc可以压缩为3a3b2c。abcabcabc可以压缩为3abc。现输入一个压缩后的字符串请编写程序解压还原原始字符串并输出其长度。输入保证解压后的长度不超过100000输入格式一行字符串只包含小写字母和数字数字为1-9。输出格式两行第一行为还原后的原始字符串第二行为其长度。样例输入3a3b2c 输出 aaabbbcc 8第4题20分长征路线最长连续爬升天数——递推与贪心题目描述红军某部记录了连续n天的行军海拔高度。现需找出最长连续爬升的天数长度即连续严格递增的子段长度至少为1天。输入格式第一行一个整数 n1 ≤ n ≤ 100000。第二行 n 个整数表示每天的海拔高度。输出格式一个整数表示最长连续爬升天数。样例输入 6 3 1 2 3 5 4 输出 4解释最长连续递增子段为 1 2 3 5长度4参考答案与解析一、单选题答案与解析第1题答案 C解析a/b执行的是整数除法5/2 结果为2截断小数部分然后赋值给 double 类型的变量 c 时隐式转换为浮点数所以 c 的值为 2.0。cout 输出 double 类型时默认不显示多余的小数末尾0因此输出为 2。注意题目问输出的结果C选项为2.0描述的是变量实际存储的值。第2题答案 B解析标准C中数组长度必须是编译期常量不可以用变量定义。虽然某些编译器如g支持变长数组VLA作为扩展但这不是标准C的规范在正式竞赛中应视为错误写法。其他选项均为正确描述。第3题答案 B解析不使用记忆化的递归求解斐波那契数列会产生大量重复计算时间复杂度为O(2^n)n稍大如n50就会导致运行时间急剧增加甚至超时。迭代、递推、记忆化数组都能将复杂度优化到O(n)。第4题答案 A解析判断字符是否在某个区间必须使用逻辑与“连接两个条件表达式。B选项使用了或”||“且缺少引号C选项使用或”||逻辑错误D选项的连比写法在C中不合法。第5题答案 B解析A错误continue是跳过本次循环剩余语句进入下一次迭代B正确break在嵌套循环中只能跳出当前最内层的一层循环C错误break也可用于循环语句D错误continue仅用于循环结构不能用于switch。二、多选题答案与解析第6题答案 AC解析C标识符命名规则只能由字母、数字、下划线组成且不能以数字开头不能与关键字重名。A选项以下划线开头合法B选项以数字开头错误C选项由字母组成合法D选项是关键字不能用作变量名。第7题答案 ABD解析A正确vector是动态数组支持通过下标随机访问B正确set底层是红黑树自动去重并升序排列C错误map的键key是唯一的不能重复值value可以重复D正确pair是STL中用于组合两个值的工具。选错不得分。第8题答案 AC解析以空间换时间是指通过使用额外的存储空间来降低算法的时间复杂度。A桶排序需要额外数组统计频率C记忆化搜索用数组存储已计算结果避免重复递归都是典型应用。B递归求阶乘不涉及额外空间换取时间D暴力枚举通常时间开销大也不属于此范畴。第9题答案 ABC解析A正确结构体成员可以是不同类型B正确同类型的结构体变量之间可以直接赋值默认逐成员拷贝C正确结构体可作为参数传递值传递或引用传递D错误结构体支持嵌套定义即成员可以是另一个结构体类型。第10题答案 B解析程序功能是累加1到10中所有不是3的倍数的数。跳过3、6、9累加 12457810 37。三、编程题参考代码与解析第1题丝路驼队物资调度思路分析本题要求用最少的趟数运完所有货物每趟载重不超过 M货物不可拆分。这是一个经典的双指针贪心问题先将所有货物重量从小到大排序。设置左指针l指向最轻的货物右指针r指向最重的货物。每次尝试让最轻和最重的货物装在同一趟若w[l] w[r] M说明能一起装则l轻的被带走同时r--重的也被带走。否则说明最重的无法与当前最轻的一起装则最重的只能单独装一趟只让r--。无论哪种情况这一趟都运走了一些货物趟数ans。重复直到l r输出ans。代码实现#includebits/stdc.husingnamespacestd;intw[1010];//货物重量数组intmain(){intn,M;cinnM;for(inti1;in;i)cinw[i];sort(w1,wn1);//升序排序intl1,rn,ans0;while(lr){if(w[l]w[r]M){//最轻和最重能同趟l;//轻的带走r--;//重的也带走}else{//最重不能与当前最轻同趟r--;//最重的单独装一趟}ans;//每趟计数}coutans;return0;}第2题数字守艺人数位黑洞思路分析本题模拟数字黑洞6174过程要求输出第一次出现重复数字时整个序列中不同数字的个数。操作步骤将当前四位数拆成四个数字存入数组下标1~4。将数组升序排列得到最小数注意前导0仍作为有效位如0378即378但计算时直接按四位数值处理即可因为相减时会自动处理。将数组降序排列得到最大数。计算差值作为下一个数。用setint记录所有出现过的数每生成一个新数就尝试插入若发现该数已在集合中说明开始重复停止循环。输出集合的大小即为不同数字的个数。因为题目保证数字不全相同且最多迭代次数很小一般几十次直接模拟即可。时间复杂度 O(常数)。代码实现#includebits/stdc.husingnamespacestd;intd[5];//存储四位数的各位数字下标1~4intnextNum(intx){//计算下一个黑洞数for(inti1;i4;i){//提取四位d[i]x%10;x/10;}sort(d1,d5);//升序排列从小到大intminNumd[1]*1000d[2]*100d[3]*10d[4];//最小数intmaxNumd[4]*1000d[3]*100d[2]*10d[1];//最大数降序returnmaxNum-minNum;}intmain(){intx;cinx;setints;//记录已经出现的数while(s.find(x)s.end()){//当前数未出现过s.insert(x);//加入集合xnextNum(x);//生成下一个}couts.size();//集合大小即不同数字个数return0;}第3题智传民韵纹样编码思路分析本题是字符串解压问题压缩规则为数字 连续字母子串表示将该子串重复数字次。例如3abc→abcabcabc3a3b2c→aaabbbcc。解压方法是一次遍历输入字符串若当前字符是数字‘0’~‘9’则完整解析出数字值。然后向后提取连续的小写字母作为待重复的子串。将该子串重复数字次拼接到结果字符串中。若当前字符是字母‘a’~‘z’则直接拼接到结果。遍历结束后输出解压后的字符串及其长度。代码实现#includebits/stdc.husingnamespacestd;intmain(){string s,ans;cins;inti0;while(is.size()){if(s[i]0s[i]9){//遇到数字解析重复次数intnum0;while(is.size()s[i]0s[i]9){//解析完整数字numnum*10(s[i]-0);i;}string sub;while(is.size()s[i]as[i]z){//提取数字后的连续字母子串subs[i];i;}for(intk0;knum;k){//重复拼接anssub;}}else{//直接是字母原样拼接anss[i];i;}}coutansendl;//输出解压后的字符串coutans.size();//输出长度return0;}第4题长征路线最长连续爬升天数思路分析本题求最长连续严格递增子段的长度采用一次遍历即可用cur记录当前连续递增子段的长度初始为 1至少包含第一天。用ans记录全局最大长度初始为 1。从第 2 天开始遍历若当前海拔高于前一天则cur连续递增延续。否则说明递增中断更新ans max(ans, cur)并将cur重置为 1当前这一天作为新子段的起点。遍历结束后再更新一次ans处理整个序列一直递增的情况。输出ans。代码实现#includebits/stdc.husingnamespacestd;inth[100010];//海拔数组intmain(){intn;cinn;for(inti1;in;i)cinh[i];intans1;//至少为1天intcur1;//当前连续递增段长度for(inti2;in;i){//从第二天开始比较if(h[i]h[i-1]){//当前比前一天高递增延续cur;}else{//递增中断if(curans)anscur;//更新最大值cur1;//重置为当前这一天}}if(curans)anscur;//处理最后一段coutans;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;}