资源简介 第二届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题(初中组)(PASCAL 语言 竞赛用时:2小时)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●基础知识部分:(44分)已知A盘上的目录和文件组织如下:(1+1+3=5%)其中TP、TB、DOS、D11、D31都是子目录名。设当前命令提示符为 A:\TB> ,请写出完成如下操作的DOS 命令:① 将F1.TXT 移到D31子目录中去;② 删除子目录 TB ; ③ 在DOS 运行中,没有执行过PATH 命令,现要用DOS子目录中FORMAT 命令,对插入在B驱动器(5.25英寸高密)中的360KB软盘进行格式化工作,请写出相应的操作命令。2.执行命令时,屏幕上显示如下出错信息:(1+1=2%)WRITE PROTECT ERROR WRITING DRIVE BABORT, RETRY , FALL ?请说明这是什么错误?应如何校正?3.请用等号或不等号联接表示下列不同进位制数值的大小。(3%)例如:(3)10 <(4)4 =(100)2 < ( A )16其中圆括号外右下角的下标,表示圆括号内数的进位制。(21)10 (15)16 (25)8 (10101)24.阅读下列程序段,写出程序段运行后变量X 的值。(4%)100 X1=3X1:=3 ;X2:=8 ;FOR I:=1 TO 5 DOBEGINX:=(X1+X2)*2 ;X1:=X2 ;X2:=X ;END;WRITELN(‘X=’,X) ;5.阅读下列程序段,写出程序运行后数组元素A1,A2,……A11中的值 。(6%)A[1]:=1;A[2]:=1 ; K:=1 ;REPEATA[K+2]:=1 ;FOR I:=K DOWNTO 2 DOA[I]:=A[I] +A[I-1 ] ;K:=K+1 ;UNTIL K>=10 ;6.已知:ACK(M,N)函数的计算公式如下: (4%)N+1 M=0ACK(M,N)= ACK(M-1,1) N=0ACK(M-1,ACK(M,N-1) M≠0 且N≠0请计算:ACK(1,2)与ACK(2,2)的值。7.请写出对应计算如下算式的程序段:(4%)Y=ANXN+AN-1XN-1+……A1X+A08.有N×N个数据组成如下方阵:(7%)A11 A12 A13 …… A1NA21 A22 A23 …… A2NA31 A32 A33 …… A3N…………AN1 AN2 AN3 …… ANN并已知: Aij = Aji现将A11 ,A21,A22 ,A31 ,A32 ,A33 …存储在一维数组A[1],A[2],…A[(N*(N+1))/2] 中。试问:任给i,j怎样求出K来,使得A[K]的值正好是Aij,请写出由i,j计算K值的表达式。9.已知:A1,A2,……,A81 共有81个数,其中只有一个数比其它数大,要用最少的比较运算次数,把这个值大的数找出来(假设两个数比较一次能决定出大于、小于或等于这三种情况)请将以下算法补充完整:(9%)第一步: S1 = A1 + A2 + …… + A27S2 = A28 + A29 +……+ A54第一次比较(S1,S2) :S1 > S2 取 K=0S1 < S2 取 K=27S1 = S2 取 K=54第二步: S1 = AK+1 + AK+2 + …… + AK+9S2 = AK+10 + AK+11 +……+ AK+18第二次比较(S1,S2) :S1 > S2 取 K=S1 < S2 取 K=S1 = S2 取 K=第三步: S1 = AK+1 + AK+2 + AK+3S2 = AK+4 + AK+5 + AK+6第三次比较(S1,S2) :S1 > S2 取 K= S1 < S2 取 K=S1 = S2 取 K=第四步: S1 = AK+1S2 = AK+2第四次比较(S1,S2) :S1 > S2 为最大数S1 < S2 为最大数,S1 = S2 为最大数。二.根据题目要求,补充完善以下程序:(56%)1.[题 目] 15分(每空5分)设有N个不同整数的数列:例如N=4时,有4个不同整数的数列为17,4,16,5。数列中的第1个数17,比它后面的三个数都大,则称数17的逆数为3。数列中的第2个数4比它后面的数都小,则称数4的逆数为0。同时记数列中全部逆数的和称为数列的逆数。上例中,数列17,4,16,5的逆数:为3+0+1+0=4。[程序要求]:当给出N个不同整数的数列后,求出此数列的逆数。[算法描述]:为求得上面问题的解,设置数组A:array[1..N] of Integer 和逆数计数器5,然后用一个二重循环求出数列的逆数。[程 序]:Const N=10;Var i,j,s:integer;A:array[1..N] of integer;BeginS:=0;For I:=1 to n do read(a[I]);For I:=1 to 1 doFor j:= 2 to n doIf a[I]>a[j] then 3 ;Writeln('s=',s)End.2.[题 目] 20分(每空4分)装球:设有n个盒子(n足够大,可装入任何数量的球),分别编号1,2,……。同时有k个小球(k>0),今将k 个小球装入到盒子中去。装入规则如下:第一个盒子不能为空。装入必须严格按递增顺序进行。例如,当k=8,n=6时,装入方法有1,2,5或1,3,4在满足上面的两个条件下,要求有球的盒子尽可能多。装完后,相邻盒子中球个数差的绝对值之和最小(未装的盒子不计)。如上例中:装入法1,2,5,则差的绝对值之和为2-1+5-2=4装入法1,3,4,则差的绝对值之和为3-1+4-3=3[程序要求]:给出k(k表示小球的个数)之后,求出满足上述四个条件的装入方法。[算法描述]:设计一个数组A用数组元素代表盒子,然后依次装入小球。[程序清单]Const n=20;Var i,j,k,l:integer;A:array[1..n] of integer;BeginReadln(k);1 ;j:=1;while 2 do begina[j]:=j; 3 ; j:=j+1end;l:=j-1;while k>0 do begin4 ;k:=k-1;l:=l-1;end;for I:=1 to 5 dowrite(a[I]:4)end.3.[题 目] 21分(3+4+3+3+4+4)积木游戏:设有n 个小木块排成一排,如下图:……游戏开始时,每个小木块向下的一面涂有红、黄、蓝三种颜色之中的一种(约定:0表示红色,1表示黄色,2表示兰色)。要求通过翻看与交换方式对小木块重新排列(翻看的规则为每个小木快只能看一次),最终成为下面的形状:…… …… ……红 蓝 黄即相同颜色的木块排列在一起,设计一个翻看与交换的方案,使得用最少的交换次数实现上面的要求。[算法描述]:翻看小木块时,可以从两端进行。例如,设中间状态如下:…… A …… B …… C ……红 未翻过 蓝 黄此时,可以从两个方向看,即从A或B处开始:若看A则有三种可能性:为红色,则不用交换为兰色,交换一次,即A与B交换为黄色,交换两次,即C与B交换一次,然后A与C再交换一次此时,平均交换次数为1。若看B,也有三种可能性:为兰色,则不用交换为红色,交换一次,即B与A交换。为黄色,交换一次,即B与C交换。此时,平均交换次数为2/3。由此可见,从B处翻看直到游戏结束,次数最少符合题目要求。[程 序]Const n=20;Var i,tem,r,b,y:integer;a:array[1..n] of 0..2;BeginFor i:=1 to n do read(a[i]);r:=1; 1 ; y:=n;while 2 doif 3 then begintem:=a[r];a[r]:=a[b];a[b]:=tem;r:=r+1endelse if 4 then begintem:=a[b];a[b]:=a[y];a[y]:=tem;5 ; 6 ;endelse b:=b=1for I:=1 to n do write(a[I]:3)end. 展开更多...... 收起↑ 资源预览