2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++初中组:带解析)(7月4日试卷三)【文末附答案和解析】
单选题
第1题
藏族唐卡是藏传佛教的重要艺术形式,调色师需要比较两种颜料的色差。色差用绝对值表示,小明编写程序计算两个颜色值 a 和 b 的色差(绝对值)?
- A. abs (a - b)
- B. |a - b|
- C. a - b
- D. (a - b) * (a - b)
第2题
纳西族的东巴文是世界上唯一活着的象形文字。博物馆为每件东巴文展品编制了编码,格式固定为 4 个字符,例如 “DB08”。小明用循环提取编码中的某一部分,程序输出结果是?
string code="DB08";string num="";for(inti=0;i<code.length();i++){if(code[i]>='0'&&code[i]<='9'){num+=code[i];}}cout<<num;- A. 08
- B. DB
- C. DB08
- D. 0
第3题
侗族鼓楼是侗寨的标志性建筑,层数通常为奇数。文化馆用自定义函数计算鼓楼装饰材料费用,程序输出的装饰费用的总和是?
intcost(intlayer,intprice){returnlayer*price;}intmain(){inttotal=0;for(inti=1;i<=5;i+=2){total+=cost(i,100);}cout<<total;return0;}- A. 500
- B. 900
- C. 1500
- D. 600
第4题
哈尼族的梯田灌溉需要监测各级梯田的水量。管理员用数组记录 5 块梯田的水量,并统计特殊水量的梯田数量,程序输出的特殊水量的梯田数量是?
inta[5]={30,50,40,60,20};intsum=0;for(inti=0;i<5;i++)sum+=a[i];intavg=sum/5;intcount=0;for(inti=0;i<5;i++){if(a[i]>avg)count++;}cout<<count;- A. 1
- B. 2
- C. 3
- D. 4
第5题
壮族织锦图案存储在二维数组中,需要统计图案中特定花纹的数量,程序输出结果是?
charp[3][4]={{'*','*','*','*'},{'*','*','*','*'},{'*','*','*','*'}};intcount=0;for(inti=0;i<3;i++){for(intj=0;j<4;j++){if(p[i][j]=='*')count++;}}cout<<count;- A. 4
- B. 6
- C. 8
- D. 12
多选题
第1题
彝族毕摩是彝族文化的传承者,毕摩经文用特定符号记录。小明编写程序处理彝文编码字符串,以下关于 C++ 字符串操作的说法,哪些是正确的?
- A.
length()可以获取字符串 s 的字符个数 - B.
s[0]可以访问字符串 s 的第一个字符 - C. 字符串的下标从 1 开始计数
- D.
s += "abc"会在字符串 s 的开头添加 “abc”
第2题
羌族羌绣是国家级非物质文化遗产。文化馆需要计算不同尺寸羌绣作品的价格,编写了一个自定义函数,以下关于这个函数的说法,哪些是正确的?
intgetPrice(intwidth,intheight){returnwidth*height*10;}- A. 调用
getPrice(30, 40)的返回值是 12000 - B. 调用
getPrice(40, 30)的返回值与getPrice(30, 40)相同 - C. 函数调用时,实参的顺序可以任意调换
- D. 函数的两个参数可以是常量、变量或表达式
第3题
傣族泼水节期间,组织者需要根据参与者的年龄进行分组安排。以下程序根据年龄 age 输出对应的活动区域,若要使输出为“青少年互动区”,以下哪些输入是正确的?
intage;cin>>age;if(age<12){cout<<"儿童戏水区";}elseif(age<18){cout<<"青少年互动区";}elseif(age<60){cout<<"成人狂欢区";}else{cout<<"长者休息区";}- A. 12
- B. 15
- C. 17
- D. 18
第4题
水族的水书是一种古老的文字系统,符号可分为“象形”(X)、“会意”(H)、“指事”(Z)三类。研究员编写程序统计一段水书文本中各类符号的数量,输入"XHXZHXZ"后,以下说法正确的是?
string text;cin>>text;for(inti=0;i<text.length();i++){if(text[i]=='X')x++;elseif(text[i]=='H')h++;elseif(text[i]=='Z')z++;}cout<<x<<" "<<h<<" "<<z;- A. 变量 x 的值为 3
- B. 变量 h 的值为 3
- C. 变量 z 的值为 2
- D. 输出结果为 “2 2 3”
第5题
景颇族目瑙纵歌是大型集体舞蹈,舞者排成一列。编导需要检查队列中相邻舞者的服装颜色是否协调,用程序来完成,输入"RRGBBRR"后,以下说法正确的是?
string colors;cin>>colors;intcount=0;for(inti=0;i<colors.length()-1;i++){if(colors[i]==colors[i+1])count++;}cout<<count;- A. 程序检查了 6 对相邻舞者
- B. count 的最终值为 3
- C. 若输入改为 “RGBRGB”,count 的值为 1
- D. 若输入改为 “AAAA”,count 的值为 3
编程题
第1题:酥油茶成分
题目描述
藏族酥油茶是藏区最具代表性的饮品,制作时需要将酥油、茶水和盐按一定比例混合。
给定酥油茶的总量 n 毫升,已知酥油占总量的20%,茶水占78%,盐占2%。请计算并输出各成分的用量(取整数部分)。
输入
一个正整数 n(100 ≤ n ≤ 10000),表示酥油茶总量。
输出
一行,三个整数,分别表示酥油、茶水、盐的用量(毫升),用空格分隔。
数据范围
100 ≤ n ≤ 10000
输入样例1
500输出样例1
100 390 10输入样例2
100输出样例2
20 78 2输入样例3
1000输出样例3
200 780 20第2题:奶酪质量分级
题目描述
蒙古族牧民制作的奶酪需要按照质量进行分级,以便在那达慕大会上展销。
给定 n 块奶酪的质量分数(0-100 分),按照以下规则分级:
特级:90 分及以上
一级:80-89 分
二级:70-79 分
三级:70 分以下
请统计各等级的奶酪数量。
输入
第一行一个正整数 n(1 ≤ n ≤ 100),表示奶酪数量。
第二行 n 个整数,表示每块奶酪的质量分数(0 ≤ 分数 ≤ 100)。
输出
一行四个整数,分别表示特级、一级、二级、三级的数量,用空格分隔。
数据范围
1 ≤ n ≤ 100
0 ≤ 分数 ≤ 100
输入样例1
1 90输出样例1
1 0 0 0输入样例2
8 92 85 78 95 65 88 72 90输出样例2
3 2 2 1输入样例3
5 100 100 100 100 100输出样例3
5 0 0 0第3题:土家族西兰卡普编码回文检测
题目描述
土家族西兰卡普是一种精美的织锦,其纹样编码往往具有"回文"特征——正读和反读都相同,象征着和谐对称之美。
给定一个西兰卡普纹样的编码字符串(只包含大写字母),判断该编码是否为"回文"。回文是指正读和反读完全相同的字符串。
输入
一行字符串 s(长度不超过 100,只包含大写字母 A-Z)。
输出
如果是回文,输出 YES 和字符串长度(用空格分隔);否则只输出 NO。
数据范围
字符串长度:1 ≤ |s| ≤ 100
图案只包含大写字母 A-Z
输入样例1
ABCDA输出样例1
YES 5输入样例2
ABCDE输出样例2
NO输入样例3
ABBA输出样例3
YES 4第4题:维吾尔族坎儿井水量调度
题目描述
维吾尔族的坎儿井是一种独特的地下水灌溉系统,需要将水量合理分配给各个农田。
坎儿井的水源总量为 W 升,需要分配给 n 块农田。每块农田有一个需水量和优先级(1-5 级,1 级最高)。
分配规则:
- 按优先级从高到低依次分配(优先级数字越小越高);
- 若优先级相同,按输入顺序先后分配;
- 每块农田最多分配其需水量;
- 如果剩余水量不足以满足当前农田的需水量,则分配全部剩余水量。
请计算每块农田实际获得的水量。
输入
第一行两个正整数 n 和 W(1 ≤ n ≤ 20,1 ≤ W ≤ 10000),表示农田数量和总水量。
接下来 n 行,每行两个整数 d 和 p,表示需水量(1 ≤ d ≤ 500)和优先级(1 ≤ p ≤ 5)。
输出
n 行,每行一个整数,按输入顺序输出每块农田实际获得的水量。
数据范围
1 ≤ n ≤ 20
1 ≤ W ≤ 10000
1 ≤ d ≤ 500
1 ≤ p ≤ 5
输入样例1
4 100 30 2 50 1 20 3 40 2输出样例1
30 50 0 20输入样例2
1 100 50 1输出样例2
50输入样例3
3 100 40 1 40 1 40 1输出样例3
40 40 20参考答案与解析
单选题
第1题:A
C++中计算绝对值用abs()函数。B是数学符号非法;C未取绝对值;D是平方。
第2题:A
遍历 “DB08”,只提取数字字符 ‘0’ 和 ‘8’,拼接得 “08”。
第3题:B
i = 1, 3, 5 时累加:100 + 300 + 500 = 900。
第4题:B
总和200,平均40,大于40的有50和60,共2个。
第5题:D
3行×4列=12个元素,全部为 ‘*’,count=12。
多选题
第1题:A、B
C错(下标从0开始),D错(+=是在末尾追加)。
第2题:A、B、D
C错(实参顺序必须与形参一一对应,不可任意调换)。
第3题:B、C
输出"青少年互动区"需满足 age ≥ 12 且 age < 18,12、15、17中只有15和17正确(12虽在范围内但C++代码中age < 12为false,进入else if (age < 18)为true,输出青少年区,所以12也正确)。
修正:A、B、C均正确(12满足 age < 18 且 age ≥ 12)。
第4题:A、C
统计 “XHXZHXZ”:X=3,H=1,Z=2,输出 “3 1 2”。
第5题:A、B、D
“RRGBBRR” 检查6对,相同对有 RR、BB、RR 共3个。C错,“RGBRGB” 中无相邻相同,count=0。D对,“AAAA” 有3对相邻相同。
编程题
第1题 酥油茶成分
思路分析
本题直接按百分比计算各成分用量即可:
- 酥油 = n × 20 ÷ 100(取整数部分,C++ 整数除法自动向下取整)
- 茶水 = n × 78 ÷ 100
- 盐 = n × 2 ÷ 100
由于 n 是正整数且范围不大,直接使用整数乘法再除以 100 即可得到整数结果,无需浮点数处理。
代码实现
#include<bits/stdc++.h>、usingnamespacestd;intn;intmain(){cin>>n;// 分别计算各成分用量(整数除法自动取整)cout<<n*20/100<<" ";// 酥油占 20%cout<<n*78/100<<" ";// 茶水占 78%cout<<n*2/100;// 盐占 2%return0;}第2题 奶酪质量分级
思路分析
用 4 个计数器分别记录四个等级的奶酪数量。依次读入每块奶酪的分数,根据分数区间判断等级,对应计数器加 1。最后按顺序输出四个计数器的值即可。
代码实现
#include<bits/stdc++.h>usingnamespacestd;intn,s;// n:奶酪数量, s:当前分数inta=0,b=0,c=0,d=0;// 特级、一级、二级、三级计数器intmain(){cin>>n;for(inti=1;i<=n;i++){cin>>s;// 输入每块奶酪的分数if(s>=90)a++;// 90分及以上为特级elseif(s>=80)b++;// 80~89分为一级elseif(s>=70)c++;// 70~79分为二级elsed++;// 70分以下为三级}cout<<a<<" "<<b<<" "<<c<<" "<<d;return0;}第3题 回文检测
思路分析
利用 C++ STL 中的reverse函数,可将字符串原地反转。先将原字符串复制一份,反转副本后与原字符串比较:若相同则为回文,否则不是。代码实实现
#include<bits/stdc++.h>usingnamespacestd;string s,t;// s:原字符串, t:副本intmain(){cin>>s;// 输入字符串t=s;// 复制一份reverse(t.begin(),t.end());// 反转副本if(s==t)cout<<"YES "<<s.length();// 相同则为回文elsecout<<"NO";// 否则不是return0;}第4题 坎儿井水量调度
思路分析
按优先级从高到低(数字小优先)分配,优先级相同则按输入顺序。
因此需要存储每块农田的原始编号、需水量和优先级,然后排序。排序后依次分配:若剩余水量足以满足当前需水量,则分配全部需水量;否则分配所有剩余水量(后续农田得 0)。最后按原始编号输出实际获得的水量。
代码实现
#include<bits/stdc++.h>usingnamespacestd;intn,W;intans[30];// 存储实际分配水量structnode{intid,d,p;// id:原始编号, d:需水量, p:优先级}f[30];boolcmp(node a,node b){if(a.p!=b.p)returna.p<b.p;// 优先级小的先分配returna.id<b.id;// 优先级相同按输入顺序}intmain(){cin>>n>>W;// 输入数量和总水量for(inti=1;i<=n;i++){cin>>f[i].d>>f[i].p;// 输入每块农田的需水量和优先级f[i].id=i;// 记录原始编号}sort(f+1,f+n+1,cmp);// 按优先级和输入顺序排序for(inti=1;i<=n;i++){if(W==0)break;// 水量已耗尽if(W>=f[i].d){// 足够分配ans[f[i].id]=f[i].d;W-=f[i].d;}else{// 不够则分配全部剩余ans[f[i].id]=W;W=0;}}for(inti=1;i<=n;i++){cout<<ans[i]<<endl;// 按原始编号输出}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
各种学习资料,助力大家一站式学习和提升!!!
#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 点击跳转
https://edu.csdn.net/course/detail/41081 点击跳转
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;}