1第十七届全国青少年信息学奥林匹克联赛初赛试题(提高组Pascal语言两小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共20题,每题1.5分。共计30分。每题有且仅有一个正确选项。)B1.在二进制下,1100011+()=1110000。A.1011B.1101C.1010D.1111B2.字符“A”的ASCII码为十六进制41,则字符“Z”的ASCII码为十六进制的()。A.66B.5AC.50D.视具体的计算机而定A3.右图是一棵二叉树,它的先序遍历是()。A.ABDEFCB.DBEFACC.DFEBCAD.ABCDEFD4.寄存器是()的重要组成部分。A.硬盘B.高速缓存C.内存D.中央处理器(CPU)B5.广度优先搜索时,需要用到的数据结构是()。A.链表B.队列C.栈D.散列表A6.在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是指()。A.程序运行时理论上所占的内存空间B.程序运行时理论上所占的数组空间C.程序运行时理论上所占的硬盘空间D.程序源文件理论上所占的硬盘空间C7.应用快速排序的分治思想,可以实现一个求第K大数的程序。假定不考虑极端的最坏情况,理论上可以实现的最低的算法时间复杂度为()。A.O(n2)B.O(nlogn)C.O(n)D.O(1)D8.为解决Web应用中的不兼容问题,保障信息的顺利流通,()制定了一系列标准,涉及HTML、XML、CSS等,并建议开发者遵循。A.微软B.美国计算机协会(ACM)C.联台国教科文组织D.万维网联盟(W3C)2B9.体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。每个同学按顺序来到操场时,都从排尾走向排头,找到第一个比自己高的同学,并站在他的后面。这种站队的方法类似于()算法。A.快速排序B.插入排序C.冒泡排序D.归并排序A10.1956年()授予肖克利(WilliamShockley)、巴丁(JohnBardeen)和布拉顿(WalterBrattain),以表彰他们对半导体的研究和晶体管效应的发现。A.诺贝尔物理学奖B.约翰•冯•诺依曼奖C.图灵奖D.高德纳奖(DonaldE.KnuthPrize)二、不定项选择题(共10题,每题1.5分,共计15分。每题有一个或多个正确选项。多选或少选均不得分。)DC1.如果根结点的深度记为1,则一棵恰有2011个叶子结点的二叉树的深度可能是()。A.10B.11C.12D.2011ABCD2.在布尔逻辑中,逻辑“或”的性质有()。A.交换律:PVQ=QVPB.结台律:PV(QVR)=(PVQ)VRC.幂等律:PVP=PD.有界律:PV1=1(1表示逻辑真)AB3.一个正整数在十六进制下有100位,则它在二进制下可能有()位。A.399B.400C.401D.404BC4.汇编语言()。A.是一种与具体硬件无关的程序设计语言B.在编写复杂程序时,相对于高级语言而言代码量较大,且不易调试C.可以直接访问寄存器、内存单元、I/O端口D.随着高级语言的诞生,如今已完全被淘汰,不再使用BC5.现有一段文言文,要通过二进制哈夫曼编码进行压缩。简单起见,假设这段文言文只由4个汉字“之”、“乎”、“者”、“也”组成,它们出现的次数分别为700、600、300、400。那么,“也”字的编码长度可能是()。A.1B.2C.3D.43ABD6.生物特征识别,是利用人体本身的生物特征进行身份认证的一种技术。目前,指纹识别、虹膜识别、人脸识别等技术己广泛应用于政府、银行、安全防卫等领域。以下属于生物特征识别技术及其应用的是()。A.指静脉验证B.步态验证C.ATM机密码验证D.声音验证CD7.对于序列“7、5、1、9、3、6、8、4”,在不改变顺序的情况下,去掉()会使逆序对的个数减少3。A.7B.5C.3D.6A8.计算机中的数值信息分为整数和实数(浮点数)。实数之所以能表示很大或者很小的数,是由于使用了()。A.阶码B.补码C.反码D.较长的尾数BCD9.对右图使用Dijkstra算法计算S点到其余各点的最短路径长度时,到B点的距离d[B]初始时赋为8,在算法的执行过程中还会出现的值有()。A.3B.7C.6D.5BAC10.为计算机网络中进行数据交换而建立的规则、标准或约定的集合成为网络协议。下列英文缩写中,()是网络协议。A.HTTPB.TCP/IPC.FTPD.三、问题求解(共2题,每题5分,共计10分)1.平面图是可以画在在平面上,且它的边仅在顶点上才能相交的简单无向图。4个顶点的平面图至多有6条边,如右图所示。那么,5个顶点的平面图至多有___9___条边。2.定义一种字符串操作,一次可以将其中一个元素移到任意位置。举例说明,对于字符串”BCA”,可以将A移到B之前,变成字符串”ABC”。如果要将字符串”DACHEBGIF”变成”ABCDEFGHI”,最12345678910CDABCDABBCBCABDCDABCDABC4少需要_____4___次操作。四、阅读程序写结果(共4题,每题8分,共计32分)1.ConstSIZE=100;varn,i,sum,x:integer;a:array[1..SIZE]ofinteger;beginreadln(n);fillchar(a,sizeof(a),0);fori:=1tondobeginread(x);inc(a[x]);end;i:=0;sum:=0;whilesum(ndiv2+1)dobegininc(i);sum:=sum+a[i];end;writeln(i);end.输入:1145664332321输出:32.varn:integer;proceduref2(x,y:integer);5forward;proceduref1(x,y:integer);beginifxnthenf2(y,x+y);end;proceduref2(x,y:integer);beginwrite(x,’’);f1(y,x+y);end;beginreadln(n);f1(0,1);end.输入:30输出:_____________3.constV=100;varvisited:array[1..v]ofboolean;e:array[1..V,1..V]ofinteger;n,m,ans,i,j,a,b,c:integer;proceduredfs(x,len:integer);varI:integer;beginvisited[x]:=true;iflenansthenans:=len;fori:=1tondo6if(notvisited[i])and(e[x,i]-1)thendfs(i,len+e[x,i]);visited[x]:=false;end;beginreadln(n,m);fori:=1tondoforj:=1tondoe[i][j]:=-1;fori:=1tomdobeginreadln(a,b,c);e[a][b]:=c;e[b][a]:=c;end;fori:=1tondovisited[i]:=false;ans:=0;fori:=1tondodfs(i,0);writeln(ans);end.输入:46121023203430414013502460输出:__________4.constSIZE=10000;LENGTH=10;7varsum:longint;n,m,i,j:integer;a:array[1..SIZE,1..LENGTH]ofinteger;functionh(u,v:integer):integer;varans,i:integer;beginans:=0;fori:=1tondoifa[u][i]a[v][i]theninc(ans);h:=ans;end;beginreadln(n);filichar(a,sizeof(a),0);m:=1;repeati:=1;while(i=n)and(a[m][i]=1)doinc(i);ifinthenbreak;inc(m);a[m][i]:=1;forj:=i+1tondoa[m][j]:=a[m-1][j];untilfalse;sum:=0;fori:=1tomdoforj:=1tomdosum:=sum+h(i,j);writeln(sum);8end.输入:7输出:____________五、完善程序(第1题,每空2分,第2题,每空3分,共计28分)1.(大整数开方)输入一个正整数n(1≤n10100),试用二分法计算它的平方根的整数部分。constSIZE=200;typehugeint=recordlen:integer;num:array[1..SIZE]ofinteger;end;//len表示大整数的位数;num[1]表示个位、num[2]表示十位,以此类推vars:string;i:integer;target,left,middle,right:hugeint;functiontimes(a,b:hugeint):hugeint:vari,j:integer;ans:hugeint;beginfilIchar(ans,sizeof(ans),0);fori:=1toa.1endoforj:=1tob.1endo___①___:=ans.num[i+j—1]+a.num[i]*b.num[j];fori:=1toa.len+b.1endobeginans.num[i+1]:=ans.num[i+1]+ans.num[i]div10;___②___;9ifans.num[a.1en+b.1en]0thenans.len:=a.1en+b.1enelseans.len:=a.1en+b.1en–1;end;times:=ans;end;functionadd(a,b:hugeint):hugeint;vari:integer;ans:hugeint;beginfillchar(ans.num,sizeof(ans.num),0);ifa.1enb.1enthenans.len:=a.1enelseans.len:=b.len;fori:=1toans.1endobeginans.num[i]:=___③___;ans.num[i+1]:=ans.num[i+1]+ans.num[i]div10;ans.num[i]:=ans.num[i]mod10;end;ifans.num[ans.1en+1]0theninc(ans.len);add:=ans;end;functionaverage(a,b:hugeint):hugeint;vari:integer;ans:hugeint;beginans:=add(a,b);fori:=ans.1endownto2dobeginans.num[i-1]:=ans.num[i-1]+(___④___)*10;ans.num[i]:=ans.num[i]div2;end;10ans.num[i]:=ans.num[i]div2;ifans.num[ans.len]=0thendec(ans.len);average:=ans;end;functionplustwo(a:hugeint):hugeint;vari:integer;ans:hugeint;beginans:=a;ans.num[1]:=ans.num[1]+2;i:=1;while(i=ans.len)and(ans.num[i]=10)dobeginans.num[i+1]:=ans.num[i+1]+ans.num[i]div10;ans.num[i]:=ans.num[i]mod10;inc(i);end;ifans.num[ans.len+1]0then___⑤___;plustwo:=ans;end;functionover(a,