蓝桥杯C语言真题_第1页
蓝桥杯C语言真题_第2页
蓝桥杯C语言真题_第3页
蓝桥杯C语言真题_第4页
蓝桥杯C语言真题_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

蓝桥杯C语言真题第14届蓝桥杯C++省赛(中级)真题及解析选择题:1、设只含根结点的二叉树高度为1,共有62个结点的完全二叉树的高度为?A.4B.5C.6D.72、C++中,bool类型的变量占用字节字数为?A.1B.2C.3D.43、该程序的输出为?#include<bits/stdc++.h>usingnamespacestd;intf(intk){if(k==1){return3;}}intmain(){intn=6;cout<<f(n);return0;}A.127B.97C.63D.1264、以下关于数组的说法中,不正确的一项是?数组中所有元素必须都相同数组中各元素在内存中是顺序存放的数组最后一个元素的索引是数组的长度数组名的第一个字符可以是下划线5、以下关于结构体的说法中,正确的一项是?结构体中只能包含成员变量,不能包含成员函数结构体不能从另一个结构体继承结构体里面可以包含静态成员变量结构体中里面不能包含函数答案:CAACC编程题:1、时间限制:1000MS内存限制:65536KB题目描述:编程实现:特殊运算符假定有一个运算符“>>>”,它的功能如下所示:>>>257=25>>>182=18>>>933=93给定一个正整数N(100<n<1000),请计算n="">>>N)的结果。例如:N=257时,257–(>>>257)=257–25=232输入描述输入一个正整数N(100<n<1000)<p=""><n<1000)<p="">输出描述输出一个整数,表示N-(>>>N)的结果样例输入257样例输出232提示评分标准:4分:能正确输出第一组数据;4分:能正确输出第二组数据;4分:能正确输出第三组数据;4分:能正确输出第四组数据;4分:能正确输出第五组数据。//特殊运算符第14届省赛#include<bits/stdc++.h>//包含所有的C++的头文件注释usingnamespacestd;//use使用usingname名字space空间stdintn;intmain(){//主函数int整数cin>>n;cout<<n-(n/10);return0;}2、时间限制:1000MS内存限制:65536KB题目描述:编程实现:四叶玫瑰数四叶玫瑰数是指一个四位数,其各位上的数字的四次方之和等于本身。给定两个正整数N和M,请将N~M(1≤N≤M≤1000000)之间(含N和M)的四叶玫瑰数按从小到大的顺序输出。例如:N=1234,M=2345时,有一个四叶玫瑰数1634,因为1^4+6^4+3^4+4^4=1634,故输出1634。输入描述第一行输入两个正整数N、M(1≤N≤M≤1000000)输出描述输出一行,包含若干个用一个空格隔开的正整数,表示N~M之间的四叶玫瑰数按从小到大的顺序的输出结果注意:题目数据保证给定的N~M范围内至少有一个四叶玫瑰数样例输入12342345样例输出1634提示评分标准:5分:能正确输出第一组数据;5分:能正确输出第二组数据;5分:能正确输出第三组数据;5分:能正确输出第四组数据;5分:能正确输出第五组数据;5分:能正确输出第六组数据;5分:能正确输出第七组数据;5分:能正确输出第八组数据。//四叶玫瑰数第14届省赛#include<bits/stdc++.h>//包含所有的C++的头文件注释usingnamespacestd;//use使用usingname名字space空间stdintn,m,ans=0;intmain(){//主函数int整数cin>>n>>m;for(inti=n;i<=m;i++){if(i>=1000&&i<=10000){intg=i/1%10;ints=i/10%10;intb=i/100%10;intq=i/1000%10;if(i==g*g*g*g+s*s*s*s+b*b*b*b+q*q*q*q){cout<<i<<endl;}}}return0;}3、时间限制:1000MS内存限制:65536KB题目描述:编程实现:质因数的个数提示信息:因数:又称为约数,如果整数a除以整数b(b≠0)的商正好是整数而没有余数,我们就说b是a的因数。质数:又称为素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。2是最小的质数。质因数:如果一个数a的因数b同时也是质数,那么b就是a的一个质因数,例如:8=2×2×2,2就是8的质因数;12=2×2×3,2和3就是12的质因数。题目描述:给定两个正整数N和M(1≤N≤M≤1e7),统计N到M之间(含N和M)每个数所包含的质因数的个数,输出其中最大的个数。例如:当N=6,M=10,6到10之间6的质因数是2、3,共有2个7的质因数是7,共有1个8的质因数是2、2、2,共有3个9的质因数是3、3,共有2个10的质因数是2、5,共有2个6到10之间的数中质因数最多的是8,质因数有3个,故输出3。输入描述输入两个正整数N和M(1≤N≤M≤1e7),两个正整数之间用一个空格隔开输出描述输出一个整数,表示质因数个数中的最大值样例输入610样例输出3提示评分标准:5分:能正确输出第一组数据;5分:能正确输出第二组数据;5分:能正确输出第三组数据;5分:能正确输出第四组数据;5分:能正确输出第五组数据;5分:能正确输出第六组数据;5分:能正确输出第七组数据;5分:能正确输出第八组数据;5分:能正确输出第九组数据;5分:能正确输出第十组数据。//质因数的个数第14届省赛#include<bits/stdc++.h>//包含所有的C++的头文件注释usingnamespacestd;//use使用usingname名字space空间stdintma=0,n,m;boolisPrime(intt){if(t<2)returnfalse;for(inti=2;i*i<=t;i++){if(t%i==0)returnfalse;}returntrue;}intnum(intt){//判断有多少个因数intg=0;for(intj=2;j<=t;j++){while(t%j==0){g+=isPrime(j);t/=j;if(t==1)returng;}}}intmain(){//主函数int整数cin>>n>>m;for(inti=n;i<=m;i++){//打擂台ma=max(ma,num(i));}cout<<ma;return0;}4、时间限制:1000MS内存限制:65536KB题目描述:编程实现:最大的矩形纸片一张半边参差不齐的网格纸(网格边长均为1),有一边是完整没有破损的。现要从中剪出一片面积最大的矩形纸片。给定网格纸中完整边的长度N(1≤N≤1000000),以及网格中每一列残存部分的高度(1≤高度≤10000),输出能够剪出的最大矩形纸片面积。输入描述第一行输入一个正整数N(1≤N≤1000000),表示纸片完整边的长度第二行输入N个正整数(1≤正整数≤10000),表示每列格子残存部分的高度,两个正整数之间用一个空格隔开输出描述输出一个正整数,表示能够剪出的最大矩形纸片面积样例输入6321452样例输出8提示评分标准:6分:能正确输出第一组数据;6分:能正确输出第二组数据;6分:能正确输出第三组数据;6分:能正确输出第四组数据;6分:能正确输出第五组数据;6分:能正确输出第六组数据;6分:能正确输出第七组数据;6分:能正确输出第八组数据;6分:能正确输出第九组数据;6分:能正确输出第十组数据。//最大的矩形纸片第14届省赛用到栈#include<bits/stdc++.h>usingnamespacestd;inta[1000005];stack<int>s;intmain(){intn;cin>>n;for(inti=1;i<=n;i++){cin>>a[i];}intma=0;for(inti=1;i<=n+1;i++){intt=a[i];while(!s.empty()&&t<a[s.top()]){//下一位比上位小inth=a[s.top()];s.pop();intw=s.empty()?i-1:(i-s.top()-1);ma=max(ma,h*w);}s.push(i);}cout<<ma<<endl;return0;}5、时间限制:1000MS内存限制:65536KB题目描述:编程实现:数字游戏老师给出了一组数,要求小蓝对这组数进行调整,调整的规则如下:1.第1次,从这组数中选出一个最小的数,把它调整为和第二小的数一样大;2.第2次,再从这组数中选出一个最大的数,把它调整为和第二大的数一样大;3.重复执行1、2步骤;4.当这组数中所包含的不同的数少于3个时,结束调整。现在给定了一组数,请帮小蓝编写程序计算出总共的调整次数,以及调整结束时这组数中的最小数和最大数。例1:当这组数是2222时,这组数中所包含的不同的数少于3个(只有2这一种数),无需调整,最后输出:022例2:当这组数是1342时,调整过程如下:1.先将这组数中最小的数1,改成2,这组数变为:23422.再将这组数中最大的数4,改成3,这组数变为:2332这时,这组数中只包含2、3两个数了,满足规则4,调整结束,总共调整了2次,故最后输出:223输入描述第一行输入一个正整数N(3≤N≤1000000),表示这组数中数的个数第二行输入N个正整数(1≤正整数≤1000000),正整数之间用一个空格隔开输出描述输出一行,包含三个整数,分别是总的调整次数、调整结束时的最小值和最大值,整数之间用一个空格隔开样例输入41342样例输出223提示评分标准:8分:能正确输出第一组数据;8分:能正确输出第二组数据;8分:能正确输出第三组数据;8分:能正确输出第四组数据;8分:能正确输出第五组数据;8分:能正确输出第六组数据;8分:能正确输出第七组数据;8分:能正确输出第八组数据;8分:能正确输出第九组数据;8分:能正确输出第十组数据。//数字游戏第14届省赛混分应该会超时不过可以拿很多分#include<bits/stdc++.h>usingnamespacestd;inta[1000006],t[1000006];intn,sum=0,ma=1,mi=1000000;structnode{intnum;intg;};nodec[1000006];intmain(){cin>>n;for(inti=1;i<=n;i++){cin>>a[i];}//预处理for(inti=1;i<=n;i++){t[a[i]]++;//桶排序}intg=0;//含多少不同的数的个数for(inti=1;i<=1000000;i++){if(t[i]>0){c[++g].num=i;c[g].g=t[i];}}//开始调整intl=1,r=g;//l左边从第1个开始,r右边从最后1个开始while(l<r){if(g<3)break;if(c[l].g>0){//将最小的数变成第二小的数sum++;//次数+1c[l+1].g++;c[l].g--;if(c[l].g==0){l++;//右移g--;}}if(g<3)break;if(c[r].g>0){//将最大的数变成第二大的数sum++;//次数+1c[r-1].g++;c[r].g--;if(c[r].g==0){r--;//左移g--;}}}cout<<sum<<""<<c[l].num<<""<<c[r].num<<endl;return0;}//数字游戏第14届省赛可AC不会超时优化一下不用每次操作一次#include<bits/stdc++.h>usingnamespacestd;inta[1000006],t[1000006];intn,sum=0,ma=1,mi=1000000;structnode{intnum;intg;};nodec[1000006];intmain(){cin>>n;for(inti=1;i<=n;i++){cin>>a[i];}//预处理for(inti=1;i<=n;i++){t[a[i]]++;//桶排序}intg=0;//含多少不同的数的个数for(inti=1;i<=1000000;i++){if(t[i]>0){c[++g].num=i;c[g].g=t[i];}}//开始调整intl=1,r=g;//l左边从第1个开始,r右边从最后1个开始while(l<r){if(g<3)break;//将最小的数变成第二小的数分3种情况//左边的数量小于右边的if(c[l].g<c[r].g){c[l+1].g+=c[l].g;//直接完成多次变化g--;if(g<3){//左移的时候不同数字个数少了c[r-1].g+=c[l].g-1;sum+=c[l].g*2-1;//左右两边同时操作l++;//右移break;}l++;//右移c[r-1].g+=c[l].g;sum+=c[l].g*2;//左右两边同时操作}elseif(c[l].g>c[r].g){c[l+1].g+=c[r].g;//直接完成多次变化r--;//左移c[r-1].g+=c[r].g;sum+=c[r].g*2;//左右两边同时操作g--;continue;//跳过本次下次还是从左边操作}else{c[l+1].g+=c[l].g;sum+=c[l].g,g--;l++;//右移if(g<3)break;c[r-1].g+=c[r].g;sum+=c[r].g,g--;r--;//左移}}cout<<sum<<""<<c[l].num<<""<<c[r].num<<endl;return0;}6、时间限制:1000MS内存限制:65536KB题目描述:编程实现:活动人数有一个大型企业集团,由N个部门组成,编号从1到N。这些部门之间的层次关系形成了一个树状结构,一个上级部门可能会有1个或多个直接下级部门,一个下级部门只有一个直接上级部门。本月集团举办了一个大型活动,这次的活动组织方按如下要求安排活动:1.来的人越多越好;2.如果一个上级部门参加本次活动,那么他们的直接下级部门就不能参加,而他的间接下集部门可以参加(如下图,如果部门1参加,那么部门2、3不能参加,而部门4、5、6可以参加)。请你帮他们计算一下,如何安排可以使参加活动的人数最多,并输出参加活动的最多人数。例如:当N=6,每个部门编号为1到6,部门上下级关系和部门的人数如下图所示:注意:示例中,部门1是层级最高的部门,没有直接上级,故将其直接上级部门设为0;当安排(1、4、5、6)这4个部门参加活动时,人数最多,为11,所以输出11。输入描述第一行输入一个正整数N(1≤N≤100000),表示集团所有部门的数量接下来有N行,每行输入三个非负整数F、S和C,(0≤F≤N,1≤S≤N,F≠S,1≤C≤1000),F表示是部门S的直接上级

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论