ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

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

2026年全国青少年信息素养大赛算法应用主题赛C++赛项【决赛】模拟卷4:文末附答案 2026年全国青少年信息素养大赛算法应用主题赛C赛项【决赛】模拟卷4文末附答案一、单选题共5题每题2分共10分1.红军某部正在编制密码通信系统需要定义一个变量存储电报密文长度最大不超过100000。以下定义最合适的是 。A.short length;B.int length;C.double length;D.char length;2.以下关于C数组的说法错误的是 。A. 数组下标从0开始B. 数组名可以看作指向数组首元素的指针C. 定义数组时数组长度可以是变量D. 可以用循环遍历数组中的所有元素3.红军战士要判断一个整数n是否吉利数——既能被7整除代表7连又不能被13整除。正确的条件表达式是 。A.n % 7 0 n % 13 ! 0B.n % 7 0 || n % 13 ! 0C.n / 7 0 n / 13 ! 0D.n % 7 0 n % 13 04.以下程序段执行后输出结果是 。intsum0;for(inti1;i10;i){if(i%30)continue;sumi;}coutsum;A. 55B. 37C. 45D. 405.红军通信员编写了一个函数用于计算行军总里程intdistance(intspeed,intdays){returnspeed*days;}若调用distance(35, 4)返回值为 。A. 39B. 140C. 120D. 135二、多选题共5题每题4分共20分。6.下列C变量名中合法的有 。A._RedArmyB.2ndDivisionC.soldier_countD.int7.关于break和continue语句下列说法正确的有 。A.break用于跳出当前循环或switch语句B.continue用于结束本次循环进入下一次迭代C. 在嵌套循环中break只跳出最内层循环D.continue可以用于switch语句中8.以下关于C函数的说法正确的有 。A. 函数可以没有返回值void类型B. 函数可以没有参数C. 函数可以在另一个函数内部定义D. 函数可以递归调用自身9.要统计一段文本含大小写字母、数字、标点中英文字母的个数需要用到哪些C知识 A. 字符数组或string类型B. 循环遍历C. 条件判断判断字符是否为字母D. 指针运算10.以下关于C常量的定义语法正确的有 。A.const int MAX 1000;B.#define MAX 1000C.const int MAX; MAX 1000;D.#define MAX 1000;三、编程操作题共4题第11、12题各15分第13、14题各20分共70分第1题15分——口令验证红军哨兵使用口令系统验证身份。系统预设正确口令为红星闪耀。哨兵连续输入口令若输入正确则输出通过并结束程序若输入错误则提示口令错误请重试允许重新输入。若连续错误达到3次则输出警报并结束程序。输入格式若干行字符串每行为一次输入的口令。输出格式根据情况输出对应信息每次输出占一行。样例输入1红星闪耀样例输出1通过样例输入2错误口令 错误口令 红星闪耀样例输出2口令错误请重试 口令错误请重试 通过样例输入3错误口令 错误口令 错误口令样例输出3口令错误请重试 口令错误请重试 口令错误请重试 警报第2题15分——弹药统计红军某连队有3个排每个排有若干名战士。请统计全连的总弹药数。输入格式第一行一个整数n1 ≤ n ≤ 100表示排的数量。接下来n行每行第一个整数m1 ≤ m ≤ 50表示该排的战士人数后面跟着m个整数表示每名战士持有的弹药数0 ≤ 弹药数 ≤ 100。输出格式一个整数表示全连的总弹药数。样例输入3 4 5 3 8 6 3 2 7 4 2 9 1样例输出45解释第1排538622第2排27413第3排9110总计45。第3题20分——长征路上的质数哨站红军在长征途中每隔一段距离设立一个哨站。哨站编号从1到n。指挥部决定只有质数编号的哨站才安排瞭望员。请输出所有需要安排瞭望员的哨站编号。输入格式一个整数n2 ≤ n ≤ 10000。输出格式一行按从小到大输出所有质数编号用空格分隔。样例输入20样例输出2 3 5 7 11 13 17 19第4题20分——军粮分配红军某部有n名战士编号1~n依次排队领取军粮。仓库中有m袋粮食每袋粮食的重量存储在数组w中。分配规则如下战士按编号从小到大依次领取每位战士领取当前剩余粮食中最重的一袋若当前剩余粮食袋数少于剩余战士人数则剩余的每位战士各领取1袋按从重到轻依次分配分配结束。请模拟该分配过程输出每位战士最终分到的粮食重量。输入格式第一行两个整数n和m1 ≤ n ≤ 10001 ≤ m ≤ 1000分别表示战士人数和粮食袋数。第二行m个整数表示每袋粮食的重量1 ≤ 重量 ≤ 10000。输出格式一行n个整数用空格分隔表示第1到第n位战士分到的粮食重量。样例输入13 5 10 20 30 40 50样例输出150 40 30解释3位战士5袋粮食。第1位取最重的50第2位取40第3位取30。剩余2袋20和10不再分配因为战士已全部领完。样例输入25 3 100 50 80样例输出2100 80 50 0 0解释5位战士3袋粮食。第1位取100第2位取80第3位取50。剩余两位战士没有粮食可领输出0。样例输入32 2 15 25样例输出325 15参考答案与解析一、单选题第1题【答案】B解析密文长度最大10000short通常为16位范围约-32768~32767虽然能存下10000但不够安全规范int是整型首选范围足够double是浮点型不适合存储整数长度char只能存储单个字符。应选int。第2题【答案】C解析A正确数组下标从0开始B正确数组名代表首地址C错误C中定义数组时长度必须是常量表达式不能用变量除非使用动态数组或vectorD正确数组可以配合循环遍历。第3题【答案】A解析题目要求能被7整除且不能被13整除。A选项n % 7 0 n % 13 ! 0完全符合B选项用||或错误C选项用除法判断整除错误应用%取模。D选项n % 7 0 n % 13 0能被7整除且能被13整除错误。第4题【答案】B解析循环i从1到10遇到i % 3 0即i3,6,9时执行continue跳过累加。实际累加的是12457810 37。第5题【答案】B解析函数distance(int speed, int days)返回speed * days。调用distance(35, 4)即35×4140。二、多选题第6题【答案】A、C解析C变量名标识符由字母、数字、下划线组成不能以数字开头不能是关键字。A_RedArmy下划线开头合法B2ndDivision数字开头不合法Csoldier_count合法Dint关键字不合法。第7题【答案】A、B、C解析A正确break跳出当前循环或switchB正确continue结束本次循环进入下一次C正确嵌套循环中break只跳出最内层D错误continue只能用于循环语句for、while、do-while不能用于switch。第8题【答案】A、B、D解析A正确函数可以无返回值voidB正确函数可以无参数C错误C不允许函数嵌套定义在一个函数内部定义另一个函数D正确函数可以递归调用。第9题【答案】A、B、C解析统计文本中字母个数需要用字符数组或string存储文本A用循环遍历每个字符B用条件判断字符是否为字母c a c z || c A c ZC。指针运算非必需D。第10题【答案】A、B解析A正确const常量定义时初始化B正确#define宏定义常量C错误const常量必须在定义时初始化不能先声明后赋值D错误#define宏定义不加分号加分号会导致宏展开时多一个分号可能引发语法错误。三、编程操作题编程题第1题思路分析本题模拟口令验证流程核心是循环计数。使用一个变量fail记录连续错误次数初始为 0。用while或for无限循环每次读入一个字符串。若等于正确口令红星闪耀立即输出通过并结束程序。否则输出错误提示fail当fail 3时输出警报并结束。代码实现#includebits/stdc.husingnamespacestd;intmain(){intfail0;//失败次数string s;//输入的口令while(true){//无限循环cins;//读入口令if(s红星闪耀){//正确cout通过endl;//输出通过return0;//结束程序}else{//错误cout口令错误请重试endl;//提示重试fail;//错误次数加1if(fail3){//达到三次cout警报endl;//输出警报return0;//结束程序}}}return0;}编程题第2题思路分析本题只需逐行累加弹药总数。先读入排数n用变量sum存储总弹药数初始为 0。对每个排先读入战士人数m然后循环m次读入每名战士的弹药数累加到sum。所有排处理完后输出sum。代码实现#includebits/stdc.husingnamespacestd;intmain(){intn;//排数cinn;intsum0;//总弹药数for(inti1;in;i){//遍历每个排intm;//该排战士人数cinm;for(intj1;jm;j){//遍历每位战士intx;//弹药数cinx;sumx;//累加}}coutsumendl;//输出总弹药数return0;}编程题第3题思路分析本题需判断 2 到 n 之间的每个数是否为质数。质数定义大于 1 且只能被 1 和自身整除。判断方法对每个数 x从 2 试除到 sqrt(x)若存在因子则非质数。优化只需检查 i*i x避免浮点运算。依次判断并输出每个质数后跟一个空格最后换行。代码实现#includebits/stdc.husingnamespacestd;boolisPrime(intx){//判断x是否为质数if(x2)returnfalse;//小于2不是质数for(inti2;i*ix;i){//试除到sqrt(x)if(x%i0)returnfalse;//有因子则不是质数}returntrue;//是质数}intmain(){intn;cinn;for(inti2;in;i){//从2开始检查if(isPrime(i)){//若是质数couti ;//输出并加空格}}coutendl;//换行return0;}编程题第4题思路分析本题核心是排序 模拟分配。将粮食重量按从大到小排序。每位战士依次取当前最重的一袋即排序后的前若干袋。实际能分到粮食的人数为min(n, m)若粮食多于战士前 n 位战士各得一袋剩余粮食作废若战士多于粮食前 m 位战士各得一袋后面的战士得 0。用数组ans存储每位战士的分配结果初始为 0将排序后的前t个重量赋给ans[1]到ans[t]最后依次输出。代码实现#includebits/stdc.husingnamespacestd;intmain(){intn,m;cinnm;inta[1010];//粮食重量for(inti1;im;i){cina[i];}sort(a1,am1,greaterint());//从大到小排序intans[1010]{0};//每位战士分到的粮食初始0inttmin(n,m);//实际能分到粮食的人数for(inti1;it;i){ans[i]a[i];//前t位战士各取一袋}for(inti1;in;i){coutans[i] ;//输出}coutendl;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;}
返回列表