NOIP2006普及组C++题目及答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第十二届全国青少年信息学奥林匹克联赛初赛试题2006(普及组C++语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)1.在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是()。A.沃尔夫奖B.诺贝尔奖C.菲尔兹奖D.图灵奖2.在下列各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境有()。A.gcc/g++B.TurboPascalC.RHIDED.freepascal3.以下断电之后仍能保存数据的有()。A.寄存器B.ROMC.RAMD.高速缓存4.Linux是一种()。A.绘图软件B.程序设计语言C.操作系统D.网络浏览器5.CPU是()的简称。A.硬盘B.中央处理器C.高级程序语言D.核心寄存器6.在计算机中,防火墙的作用是()。A.防止火灾蔓延B.防止网络攻击C.防止计算机死机D.防止使用者误删除数据7.在下列关于计算机语言的说法中,不正确的是()。A.Pascal和C都是编译执行的高级语言B.高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上C.C++是历史上的第一个支持面向对象的计算机语言D.与汇编语言相比,高级语言程序更容易阅读8.在下列关于计算机算法的说法中,不正确的是()。A.一个正确的算法至少要有一个输入B.算法的改进,在很大程度上推动了计算机科学与技术的进步C.判断一个算法的好坏的主要标准是算法的时间复杂性与空间复杂性D.目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效算法9.在下列各种排序算法中,不是以“比较”作为主要操作的算法是()。A.选择排序B.冒泡排序C.插入排序D.基数排序10.在编程时(使用任一种高级语言,不一定是C++),如果需要从磁盘文件中输入一个很大的二维数组(例如1000*1000的double型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上()。A.没有区别B.按行读的方式要高一些C.按列读的方式要高一些D.取决于数组的存储方式。11.在C++中,表达式21^2的值是()A.441B.42C.23D.2412.在C++中,判断a不等于0且b不等于0的正确的条件表达式是()A.!a==0||!b==0B.!((a==0)&&(b==0))C.!(a==0&&b==0)D.a&&b13.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入记录为:“进,出,进,进,进,出,出,进,进,进,出,出”。假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为()。A.1,2,3,4,5B.1,2,4,5,7C.1,4,3,7,6D.1,4,3,7,214.高度为n的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为()。A.10B.11C.12D.1315.与十进制数1770对应的八进制数是()。A.3350B.3351C.3352D.354016.将5个数的序列排序,不论原先的顺序如何,最少都可以通过()次比较,完成从小到大的排序。A.6B.7C.8D.917.设A=B=D=true,C=false,以下逻辑运算表达式值为真的有()。A.(A∧B)∨(C∧D)B.((A∨B∨D)∧C)C.A∧(B∨C∨D)D.(A∧B∧C)D18.(2010)16+(32)8的结果是()。A.(8234)10B.(202B)16C.(20056)8D.(100000000110)219.设栈S的初始状态为空,元素a,b,c,d,e依次入栈,以下出栈序列不可能出现的有()。A.a,b,c,e,dB.b,c,a,e,dC.a,e,c,b,dD.d,c,e,b,a20.已知6个结点的二叉树的先根遍历是123456(数字为结点的编号,以下同),后根遍历是325641,则该二叉树的可能的中根遍历是()A.321465B.321546C.213546D.231465二.问题求解(共2题,每题5分,共计10分)1.(寻找假币)现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,最少需要称几次,就可以找出假币?你还要指出第1次的称重方法。请写出你的结果:_________________________________________________。2.(取石子游戏)现有5堆石子,石子数依次为3,5,7,19,50,甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取),取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无论乙怎样取,甲只要不失误,都能获胜)?如果有,甲第一步应该在哪一堆里取多少?请写出你的结果:_________________________________________________。三.阅读程序写结果(共4题,每题8分,共计32分)1.#includeiostream.hvoidmain(){inti,u[4],a,b,x,y=10;for(i=0;i=3;i++)cinu[i];a=(u[0]+u[1]+u[2]+u[3])/7;b=u[0]/((u[1]-u[2])/u[3]);x=(u[0]+a+2)-u[(u[3]+3)%4];if(x10)y+=(b*100-u[3])/(u[u[0]%3]*5);elsey+=20+(b*100-u[3])/(u[u[0]%3]*5);coutx,yendl;}//注:本例中,给定的输入数据可以避免分母为0或下标越界。输入:9394输出:_______________2.#includeiostream.hvoidmain(){inti,j,m[]={2,3,5,7,13};longt;for(i=0;i=4;i++){t=1;for(j=1;jm[i];j++)t*=2;cout(t*2-1)*t;}coutendl;}输出:____________________3.#includeiostream.h#defineN7intfun(chars[],chara,intn){intj;j=n;while(as[j]&&j0)j--;returnj;}voidmain(){chars[N+1];intk;for(k=1;k=N;k++)s[k]='A'+2*k+1;coutfun(s,'M',N)endl;}输出:_____________4.#includeiostream.h#includeiomanip.hvoiddigit(longn,longm){if(m0)coutsetw(2)n%10;if(m1)digit(n/10,m/10);coutsetw(2)n%10;}voidmain(){longx,x2;coutInputanumber:endl;cinx;x2=1;while(x2x)x2*=10;x2/=10;digit(x,x2);coutendl;}输入:9734526输出:______________________________四.完善程序(前4空,每空2.5分,后6空,每空3分,共28分)1.(全排列)下面程序的功能是利用递归方法生成从1到n(n10)的n个数的全部可能的排列(不一定按升序输出)。例如,输入3,则应该输出(每行输出5个排列):123132213231321312程序:#includeiostream.h#includeiomanip.hintn,a[10];//a[1],a[2],…,a[n]构成n个数的一个排列longcount=0;//变量count记录不同排列的个数,这里用于控制换行voidperm(intk){intj,p,t;if(①){count++;for(p=1;p=n;p++)coutsetw(1)a[p];cout;if(②)coutendl;return;}for(j=k;j=n;j++){t=a[k];a[k]=a[j];a[j]=t;③;t=a[k];④;}}voidmain(){inti;coutEntryn:endl;cinn;for(i=1;i=n;i++)a[i]=i;⑤;}2.由键盘输入一个奇数P(P100,000,000),其个位数字不是5,求一个整数S,使P×S=1111...1(在给定的条件下,解S必存在)。要求在屏幕上依次输出以下结果:(1)S的全部数字。除最后一行外,每行输出50位数字。(2)乘积的数字位数。例1:输入p=13,由于13*8547=111111,则应输出(1)8547,(2)6例2:输入p=147,则输出结果应为(1)755857898715041572184429327286470143613(2)42,即等式的右端有42个1。程序:#includeiostream.h#includeiomanip.hvoidmain(){longp,a,b,c,t,n;while(1){cout输入p,最后一位为1或3或7或9:endl;cinp;if((p%2!=0)&&(p%5!=0))//如果输入的数符合要求,结束循环⑥;}a=0;n=0;while(ap){a=a*10+1;n++;//变量a存放部分右端项,n为右端项的位数}t=0;do{b=a/p;coutsetw(1)b;t++;if(⑦)coutendl;c=⑧;a=⑨;n++;}while(c0);coutendln=⑩endl;}参考答案一.选择题DBBCBBCADDCDCBCBBACB二.问题解答1.4次(1分)第一步:分成3组:27,27,26,将前两组放在天平上(4分)2.有获胜策略(1分),第1次在第5堆中取32颗石子(4分),。三.阅读程序1.10,10(对1个数给4分,无逗号扣1分)2.628496812833550336(前2个对1个数给1分,后3个对1个数给2分)3.54.62543799734526(数字之间无空格扣2分)四.完善程序1.(1)k=n(或n=k)(2)countmod5=0(3)perm(k+1)(4)a[k]:=a[j];a[j]:=t(5)perm(1)2.(6)break(7)tmod50=0(8)a-p*b(或a-b*p)(9)c*10+1(或10*c+1)(10)n

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功