資源簡介 第二屆全國青少年信息學(計算機)奧林匹克分區聯賽初賽試題(初中組)(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. 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫