您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第十八届2012初赛C++及答案_
1/11第十八届全国青少年信息学奥林匹克联赛初赛提高组C++语言试题(竞赛时间:2012年10月13日14:30~16:30)一、单项选择题(共10题,每题1.5分,共计15分;每题有且仅有一个正确选项)1.目前计算机芯片(集成电路)制造的主要原料是(),它是一种可以在沙子中提炼出的物质。A.硅B.铜C.锗D.铝2.()是主要用于显示网页服务器或者文件系统的HTML文件内容,并让用户与这些文件交互的一种软件。A.资源管理器B.浏览器C.电子邮件D.编译器3.目前个人电脑的()市场占有率最靠前的厂商包括Intel、AMD等公司。A.显示器B.CPUC.内存D.鼠标4.无论是TCP/IP模型还是OSI模型,都可以视为网络的分层模型,每个网络协议都会被归入某一层中。如果用现实生活中的例子来比喻这些“层”,以下最恰当的是()。A.中国公司的经理与伊拉克公司的经理交互商业文件B.军队发布命令C.国际会议中,每个人都与他国地位对等的人直接进行会谈D.体育比赛中,每一级比赛的优胜者晋级上一级比赛2/115.如果不在快速排序中引入随机化,有可能导致的后果是()。A.数组访问越界B.陷入死循环C.排序结果错误D.排序时间退化为平方级6.1946年诞生于美国宾夕法尼亚大学的ENIAC属于()计算机。A.电子管B.晶体管C.集成电路D.超大规模集成电路7.在程序运行过程中,如果递归调用的层数过多,会因为()引发错误。A.系统分配的栈空间溢出B.系统分配的堆空间溢出C.系统分配的队列空间溢出D.系统分配的链表空间溢出8.地址总线的位数决定了CPU可直接寻址的内存空间大小,例如地址总线为16位,其最大的可寻址空间为64KB。如果地址总线是32位,则理论上最大可寻址的内存空间为()。A.128KBB.1MBC.1GBD.4GB9.以下不属于目前3G(第三代移动通信技术)标准的是()。A.GSMB.TD-SCDMAC.CDMA2000D.WCDMA10.仿生学的问世开辟了独特的科学技术发展道路。人们研究生物体的结构、功能和工作原理,并将这些原理移植于新兴的工程技术之中。以下关于仿生学的叙述,错误的是()。A.由研究蝙蝠,发明雷达B.由研究蜘蛛网,发明因特网C.由研究海豚,发明声纳D.由研究电鱼,发明伏特电池二、不定项选择题(共10题,每题1.5分,共计15分;每题有一个或多个正确选项,多选或少选均不得分)1.如果对于所有规模为n的输入,一个算法均恰好进行()次运算,我们可以说该算法的时间复杂度为O(2n)。A.2n+1B.3nC.n*2nD.22n2.从顶点A0出发,对有向图()进行广度优先搜索(BFS)时,一种可能的遍历顺序是A0,A1,A2,A3,A4。3.如果一个栈初始时为空,且当前栈中的元素从栈底到栈顶依次为a,b,c(如右图所示),另有元素d已经出栈,则可能的入栈顺序有()。A.a,b,c,dB.b,a,c,dC.a,c,b,dD.d,a,b,c4.在计算机显示器所使用的RGB颜色模型中,()属于三原色之一。A.黄色B.蓝色C.紫色D.绿色5.一棵二叉树一共有19个节点,其叶子节点可能有()个。A.1B.9C.10D.116.已知带权有向图G上的所有权值均为正整数,记顶点u到顶点v的最短路径的权值为(,)duv。若12345,,,,vvvvv是图G上的顶点,且它们之间两两都存路径可达,则以下说法正确的有()。A.1v到2v的最短路径可能包含一个环B.1221(,)(,)dvvdvvC.131223(,)(,)(,)dvvdvvdvv3/11D.如果12345vvvvv是1v到5v的一条最短路径,那么234vvv是2v到4v的一条最短路径7.逻辑异或()是一种二元运算,其真值表如下所示。ababFalseFalseFalseFalseTrueTrueTrueFalseTrueTrueTrueFlase以下关于逻辑异或的性质,正确的有()。A.交换律:abbaB.结合律:()()abcabcC.关于逻辑与的分配律:()()()abcabacD.关于逻辑或的分配律:()()()abcabac8.十进制下的无限循环小数(不包括循环节内的数字均为0成均为9的平凡情况),在二进制下有可能是()。A.无限循环小数(不包括循环节内的数字均为0或均为9的平凡情)B.无限不循环小数C.有限小数D.整数9.()是目前互联网上常用的E-mail服务协议。A.HTTPB.FTPC.POP3D.SMTP10.以下关于计算复杂度的说法中,正确的有()。A.如果一个问题不存在多项式时间的算法,那它一定是NP类问题B.如果一个问题不存在多项式时间的算法,那它一定不是P类问题C.如果一个问题不存在多项式空间的算法,那它一定是NP类问题D.如果一个问题不存在多项式空间的算法,那它一定不是P类问题三、问题求解(共2题,每题5分,共计10分)1.本题中,我们约定布尔表达式只能包含p,q,r三个布尔变量,以及“与”(∧)、“或”(∨)、“非”(?)三种布尔运算。如果无论p,q,r如何取值,两个布尔表达式的值总是相同,则称它们等价。例如,(p∨q)∨r和p∨(q∨r)等价,p∨?p和q∨?q也等价;而p∨q和p∧q不等价。那么,两两不等价的布尔表达式最多有_________个。2.对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。例如,图1有5个不同的独立集(1个双点集合、3个单点集合、1个空集),图2有14个不同的独立集。那么,图3有_________个不同的独立集。4/11四、阅读程序写结果(共4题,每题8分,其中第3题的2个小题各4分,共计32分)1.#includeiostreamusingnamespacestd;intn,i,temp,sum,a[100];intmain(){cinn;for(i=1;i=n;i++)cina[i];for(i=1;i=n-1;i++)if(a[i]a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}for(i=n;i=2;i--)if(a[i]a[i-1]){temp=a[i];a[i]=a[i-1];a[i-1]=temp;}sum=0;for(i=2;i=n-1;i++)sum+=a[i];coutsum/(n-2)endl;return0;}输入:84070507020401030输出:_________2.#includeiostreamusingnamespacestd;intn,i,ans;intgcd(inta,intb){if(a%b==0)returnb;elsereturngcd(b,a%b);}intmain(){cinn;ans=0;for(i=1;i=n;i++)if(gcd(n,i)==i)ans++;coutansendl;}5/11输入:120输出:_________3.#includeiostreamusingnamespacestd;constintSIZE=20;intdata[SIZE];intn,i,h,ans;voidmerge(){data[h-1]=data[h-1]+data[h];h--;ans++;}intmain(){cinn;h=1;data[h]=1;ans=0;for(i=2;i=n;i++){h++;data[h]=1;while(h1&&data[h]==data[h-1])merge();}coutansendl;}(1)输入:8输出:_________(4分)(2)输入:2012输出:_________(4分)4.#includeiostream#includestringusingnamespacestd;intlefts[20],rights[20],father[20];strings1,s2,s3;intn,ans;voidcalc(intx,intdep){ans=ans+dep*(s1[x]-'A'+1);if(lefts[x]=0)calc(lefts[x],dep+1);if(rights[x]=0)calc(rights[x],dep+1);}voidcheck(intx){if(lefts[x]=0)check(lefts[x]);s3=s3+s1[x];if(rights[x]=0)check(rights[x]);6/11}voiddfs(intx,intth){if(th==n){s3=;check(0);if(s3==s2){ans=0;calc(0,1);coutansendl;}return;}if(lefts[x]==-1&&rights[x]==-1){lefts[x]=th;father[th]=x;dfs(th,th+1);father[th]=-1;lefts[x]=-1;}if(rights[x]==-1){rights[x]=th;father[th]=x;dfs(th,th+1);father[th]=-1;rights[x]=-1;}if(father[x]=0)dfs(father}intmain(){cins1;cins2;n=s1.size()memset(lefts,memset(rightsmemset(fatherdfs(0,1);}输入:ABCDEFBCAEDF输出:_________五、完善程序(第1题第2空3分,其余每空2.5分,共计28分)7/111.(排列数)输入两个正整数n,m(1≤n≤20,1≤m≤n),在1~n中任取m个数,按字典序从小到大输出所有这样的排列。例如输入:32输出:121321233132#includeiostream#includecstringUsingnamespacestd;ConstintSIZE=25;boolused[SIZE];intdata[SIZE];intn,m,i,j,k;boolflag;intmain(){cinnm;memset(used,false,sizeof(used));for(i=1;i=m;i++){data[i]=i;used[i]=true;}flag=true;while(flag){for(i=1;i=m-1;i++)coutdata[i];coutdata[m]endl;flag=①;for(i=m;i=1;i--){②;for(j=data[i]+1;j=n;j++)if(!used[j]){used[j]=true;data[i]=③;flag=true;break;}if(flag){for(k=i+1;k=m;k++)for(j=1;j=④;j++)if(!used[j]){8/11data[k]=j;used[j]=true;break;}⑤;}}}}2.(新壳栈)小Z设计了一种新的数据结构“新壳栈”。首先,它和传统的栈一样支持压入、弹出操作。此外,其栈顶的前c个元素是它的壳,支持翻转操作。其中,c2是一个固定的正整数,表示壳的厚度。小Z还希望,每次操作,无论是压入、弹出还是翻转,都仅用与c无关的常数时间完成。聪明的你能帮助她编程实现“新壳栈”吗?程序期望的实现效果如以下两表所示。其中,输入的第一行是正整数c,之后每行输入都是一条指令。另外,如遇弹出操作时栈为空,或翻转操作时栈中元素不足c个,应当输出相应的错误信息。指令涵义1[空格]e在栈顶压入元素e2弹出(并输出)栈顶元素3翻转栈顶的前c个元素0退出表1:指令的涵义输入输出栈中的元素(左为栈底,右为栈顶)说明3输入正整数c111压入元素11212压入元素213123压入元素3141234压入元素431432翻转栈顶的前c个元素1514325压入元素5314523翻转栈顶的前c个元素231452弹出栈顶元素
本文标题:第十八届2012初赛C++及答案_
链接地址:https://www.777doc.com/doc-2090970 .html