版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年8月第16届蓝桥杯C++编程青少组(省赛_初中级)真题(含答案)一、单选题。1.下列C++运算符中,优先级最高的是?()。A.+B.-C.*D.=标准答案:C。2.运行c++语句cout<<(char)('F'+4);的结果是?()。A.IB.JC.kD.j标准答案:B。3.运行以下c++程序,输出的结果是?()。inti=1,t=0;while(i*i<30){t+=1;i+=2;}cout<<t;A.3B.4C.9D.16标准答案:A。4.关于C++中的new和delete关键字,以下说法【错误】的是?()。A.使用newint[10]分配的数组内存必须使用delete[]释放B.int*p=newint;语句中分配的整型内存默认会被初始化为0。C.对空指针(nullptr)使用delete是安全的,不会引发错误。D.new在内存分配失败时默认输出std::bad_alloc异常,而非返回空指针。标准答案:B。5.运行以下c++程序,输出的结果是?()。intfunc(inty){y-=5;cout<<"X";return0;}intmain(){intx=10,y=5;if(x>y||func(y))cout<<y;return0;}A.X0B.X5C.5D.0标准答案:B。二、编程题。6.庆典队列。题目描述:有n名志愿者参加了一场庆典活动,我们希望将这些人排成一个矩形队列,要求队列共有A行,且每一行的人数都要相等。请计算每一行最多有多少名志愿者。注意:不一定要将所有的志愿者都安排进队列。例如:n=50,A=11,表示要将50名志愿者排成一个11行的矩形队列,那么每一行最多能安排4名志愿者。输入描述:输入两个整数n和A(2≤n≤500,2≤A≤n),分别表示志愿者人数以及矩形队列的行数,整数之间以一个空格隔开。输出描述:输出一个整数,表示矩形队列的每一行最多有多少名志愿者。样例输入:5011样例输出:4参考程序:#include<iostream>usingnamespacestd;intmain(){intn,A;//输入志愿者总数n和行数A。cin>>n>>A;//每行最多人数=n整除A。cout<<n/A<<endl;return0;}7.茶具套装。题目描述:佳佳在一家茶具商店工作,有客户要订购一些茶具套装,一套完整的茶具套装包含1个茶壶、1个盖碗、1个茶漏以及4个茶杯。现在已知茶壶、盖碗、茶漏和茶杯各自的数量,需要编写一个程序来计算最多能够组成多少套完整的茶具套装。例如:茶壶、盖碗、茶漏和茶杯各自的数量分别是3,4,2,13。根据这些茶具的数量,佳佳最多能组成2套完整的茶具套装。输入描述:输入4个整数(0≤整数≤100),分别表示茶壶、盖碗、茶漏和茶杯各自的数量,整数之间以一个空格隔开。输出描述:输出一个整数,表示最多能组成完整的茶具套装数量。样例输入:34213样例输出:2参考程序:#include<iostream>usingnamespacestd;intmain(){inta[4];for(inti=0;i<4;i++)cin>>a[i];//输入茶壶、盖碗、茶漏、茶杯。a[3]/=4;//茶杯4个一套,算出能凑几套。intb=a[0];//假设第一个是最小值。for(inti=1;i<4;i++){if(a[i]<b)b=a[i];//遍历找出最小的那个。}cout<<b<<endl;//输出答案。return0;}8.交换字符。题目描述:给定一个字符串S,其中仅包含字符"A"和字符"B"。你每次可以选择交换两个位置相邻的字符。请计算如果要使奇数位置上(位置从1开始)字符"A"的数量等于偶数位置上字符"A"的数量,最少需要进行多少次交换操作。例如:S="AABABA",从左往右数,奇数位置上字符"A"的数量为1(位置1),偶数位置上"A"的数量为3(位置2、4、6)。可将位置2的字符"A"和位置3的字符"B"交换,交换后,奇数位置上字符"A"的数量和偶数位置上字符"A"的数量都为2,满足题目要求,故最少需要交换一次。输入描述:输入一个字符串S(2≤S的长度≤10^5),其中仅包含字符"A"和字符"B"。输出描述:输出一个整数,表示满足题目要求的最少交换次数,如果无论怎么交换都无法满足题目要求,则输出-1。样例输入:AABABA样例输出:1参考程序:#include<iostream>#include<string>#include<cmath>usingnamespacestd;intmain(){strings;cin>>s;intcnt1=0,cnt2=0;//统计奇数位、偶数位上A的数量(位置从1开始)。for(inti=0;i<s.size();i++){if(s[i]=='A'){if((i+1)%2==1)cnt1++;elsecnt2++;}}inttotal=cnt1+cnt2;//A总数是奇数,不可能平分。if(total%2!=0){cout<<-1<<endl;return0;}//最少交换次数。cout<<abs(cnt1-total/2)<<endl;return0;}9.矩阵圈层90度交错旋转。题目描述:给定一个nxn的二维整数矩阵,你需要对这个矩阵的每一“圈层”的元素进行交错旋转,规则如下:圈层的定义:(1)矩阵从最外层开始,向内逐层定义“圈层”。最外层的元素构成第一圈层,移除最外层后剩余矩阵的最外层元素构成第二圈层,以此类推。(2)如果n为奇数,最中心的一个元素属于最内层的圈层,且旋转后其值不改变。旋转方向:(1)最外层(第一圈层)的元素按照顺时针方向整体旋转90度。(2)次外层(第二圈层)的元素按照逆时针方向整体旋转90度。(3)再往内一层(第三圈层)的元素按照顺时针方向整体旋转90度。以此类推,圈层的旋转方向在顺时针和逆时针之间交替进行。旋转范围:每一圈层的旋转仅限于该圈层内的元素。例:一个6x6矩阵的圈层和旋转方向定义如下:例:当n=4,原始矩阵经过圈层交错旋转后结果如下:输入描述:第一行输入一个正整数n(2≤n≤100),表示矩阵的行数和列数。接下来n行,每行输入n个整数(-1000≤整数≤1000),整数之间以一个空格隔开。输出描述:输出n行,每行n个整数,整数之间以一个空格隔开,表示经过圈层交错旋转90度变换后的矩阵。样例输入:412345678910111213141516样例输出:13951147112156103161284参考程序:#include<iostream>usingnamespacestd;//定义矩阵大小n,a是原矩阵,b是结果矩阵。intn,a[100][100],b[100][100];//输出最终矩阵b。voidPrintMatrix(){for(inti=0;i<n;i++){//遍历每一行。for(intj=0;j<n;j++){//遍历每一列。cout<<b[i][j]<<"";//输出每个元素。}cout<<endl;//一行结束换行。}}intmain(){cin>>n;//输入矩阵大小nxn。//输入矩阵,并把原矩阵先复制到b(保证中心数字不会乱)。for(inti=0;i<n;i++){for(intj=0;j<n;j++){cin>>a[i][j];//读入原始矩阵。b[i][j]=a[i][j];//把a复制给b,避免未赋值区域乱码。}}//遍历每一层圈层:k表示当前是第几层(从外到内0,1,2…)。for(intk=0;k<(n+1)/2;k++){intleft=k;//当前圈层左边界。intright=n-1-k;//当前圈层右边界。if(k%2==0){//偶数层(0、2、4…):顺时针旋转90度。for(inti=0;i<n;i++){for(intj=0;j<n;j++){//判断当前元素(i,j)是否在第k层圈层上。if((i==left&&j>=left&&j<=right)||(i==right&&j>=left&&j<=right)||(j==left&&i>=left&&i<=right)||(j==right&&i>=left&&i<=right)){//顺时针旋转公式:把a[i][j]放到b[j][n-1-i]。b[j][n-1-i]=a[i][j];}}}}else{//奇数层(1、3、5…):逆时针旋转90度。for(inti=0;i<n;i++){for(intj=0;j<n;j++){//判断当前元素(i,j)是否在第k层圈层上。if((i==left&&j>=left&&j<=right)||(i==right&&j>=left&&j<=right)||(j==left&&i>=left&&i<=right)||(j==right&&i>=left&&i<=right)){//逆时针旋转公式:把a[i][j]放到b[n-1-j][i]。b[n-1-j][i]=a[i][j];}}}}}//输出最终旋转后的矩阵。PrintMatrix();return0;}10.硬币游戏。题目描述:Jerry和Tom正在进行一局游戏。他们准备了n个盒子,编号为1到n,其中i号盒子装有ai枚硬币。他们将这n个盒子围成一圈。游戏规则如下:(1)Jerry和Tom轮流从某一个盒子中取走至少一枚硬币,Jerry先手从1号盒子开始取。(2)如果前一个玩家取的是i号盒子中的硬币,那么当前玩家必须从i+1号盒子中取硬币。特别地,如果前一个玩家取的是n号盒子中的硬币,那么当前玩家必须从1号盒子中取硬币。(3)如果轮到某位玩家时对应盒子中没有硬币,则该玩家失败。假设Jerry和Tom都采取最优策略,请问谁会赢?输入描述:本题每个测试点包含多组测试数据,格式如下:第一行输入一个整数T(1≤T≤100),表示数据组数。对于每组测试数据,第一行输入一个整数n(1≤n≤1000),表示盒子的数量。第二行输入n个整数ai(1≤ai≤10^9),分别表示1号到n号盒子中的硬币数量,整数之间以一个空格隔开。输出描述:输出T行,每行输出一个字符串,对于第i组测试数据,如果Jerry能赢,则输出"Jerry",否则输出"Tom"。样例输入:211023050样例输出:JerryTom参考程序:#include<iostream>usingnamespacestd;//数组开大点,保证能存下数据。constintMAXN=1005;longlonga[MAXN];intmain(){intT;//输入测试数据组数。cin>>T;while(T--){intn;//输入盒子数量。cin>>n;//记录第一个1出现的位置(从1开始编号)。intfirst_one=-1;for(inti=1;i<=n;i++){cin>>a[i];//只记录第一个等于1的位置。if(a[i]==1&&first_one==-1){first_one=i;}}if(first_one!=-1){//有1:看第一个1的位置是奇数还是偶数。if(first_one%2==1){cout<<"Jerry"<<endl;}else{cout<<"Tom"<<endl;}}else{//没有1:看盒子数量n的奇偶。if(n%2==1){cout<<"Jerry"<<endl;}else{cout<<"Tom"<<endl;}}}return0;}11.红蓝扑克排列。题目描述:魔术师大卫将n张红色扑克牌和n张蓝色扑克牌混合在一起并打乱洗牌后,整齐叠放在桌子上。然后大卫请现场嘉宾从这叠牌最上面的扑克牌开始拿,连续拿取任意数量的牌组成一沓(至少拿1张,最多拿2n张)。接下来是见证奇迹的时刻,无论嘉宾拿多少张扑克牌,所拿取的这沓牌中红色扑克牌的数量都不少于蓝色扑克牌的数量。给定红色扑克牌和蓝色扑克牌的张数n,请帮魔术师计算出能实现上述魔术效果的扑克牌从上到下的排列方式共有多少种。例如:当n=3,有3张红色扑克牌和3张蓝色扑克牌;6张扑克牌从上往下排列,有以下5种排列可以实现魔术效果:输入描述:输入一个整数n(1≤n≤100)表示红色扑克牌和蓝色扑克牌各自的数量。输出描述:输出一个整数,表示满足题目要求的排列方式有多少种。样例输入:3样例输出:5参考程序:#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;constintMAX_DIGITS=1000;//定义最大位数,防止高精度溢出。vector<int>c[105];//用数组存储卡特兰数,每个卡特兰数用vector<int>存高精度数字。//高精度乘法:大数(逆序存储)×普通整数。vector<int>multi(constvector<int>&num,intx){vector<int>result=num;//复制原数。intcarry=0;//进位。//逐位相乘。for(inti=0;i<result.size();i++){intproduct=result[i]*x+carry;//当前位乘积+进位。result[i]=product%10;//保留当前位。carry=product/10;//更新进位。}//处理剩余的进位。while(carry){result.push_back(carry%10);carry/=10;}returnresult;}//高精度除法:大数(逆序存储)÷普通整数。vector<int>divide(constvector<int>&num,intx){vector<int>result;intremainde
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年福建省语文省质检
- 传媒行业GenAI系列报告之73:从MiniMax看国产大模型出海投资机遇
- 产品迭代与改进思路清晰化模板
- 企业管理流程与执行规范指南
- 新型能源研发技术进步承诺书9篇范文
- 用户体验真诚友善承诺书(4篇)
- 业务计划书撰写及展示标准化模板
- 爱心捐助善款善物保障承诺书4篇
- 护理伦理学:护士的伦理素养培养
- 大规模数据处理分析实战指南
- 《肺癌脑转移》课件
- Unit5SectionB1a1d课件人教版(2024)七年级英语下册
- 电子病历个人信息安全管理制度
- 2023中国铁路成都局集团有限公司招聘高校毕业生2241人(一)笔试参考题库附带答案详解
- DB22T 389.2-2025用水定额 第2部分:工业
- 土方转运方案
- 2025医疗废物处置规范
- 建筑施工企业生产管理制度
- ISO9001 质量管理体系全套(质量手册+程序文件+表格记录全套)
- 国开(河北)2024年秋《现代产权法律制度专题》形考作业1-4答案
- 出租车驾驶员从业资格证考试题库500道题
评论
0/150
提交评论