資源簡介 第三屆全國青少年信息學(xué)(計(jì)算機(jī))奧林匹克分區(qū)聯(lián)賽初賽試題(初中組)(PASCAL 語言 競賽用時(shí):2小時(shí))●●全部試題答案均要求寫在答卷紙上,寫在試卷紙上一律無效●●基礎(chǔ)部分:<1>我國先后自行研制成功“銀河”系列的巨型計(jì)算機(jī),其中:“銀河”于1983年問世,其運(yùn)算速度為每秒___________次;“銀河Ⅱ”于1992年誕生,其運(yùn)算速度為每秒__________次;“銀河Ⅲ”于1997年通過國家鑒定,其運(yùn)算速度為每秒__________次。<2>下列軟件均屬于操作系統(tǒng)的是:___________________A. WPS 與 PC DOS B. Windows 與 Ms dosC. Word 與 Windows D. Foxbase 與 Os/2<3>在MS DOS 的根目錄中,有如下文件:TIME.EXE TIME.BAT試問:C:\>TIME < 回車 > 執(zhí)行的是什么命令?<4>設(shè)數(shù)組A[10..100,20..100] 以行優(yōu)先的方式順序存儲,每個(gè)元素占4個(gè)字節(jié),且已知A[10,20]的地址為1000,則A[50,90]的地址是 。<5>下面是一個(gè)求:1/1+1/2+2/3+3/5+5/8+8/13+13/21+21/32…前20項(xiàng)的和的程序段,試將程序補(bǔ)充完整:s:=0 ;a:=1 ; b:=1 ;for k:=1 to 10 dobegins:=____① ;A:= _ ②____;S:= __ _③ ;B:= _ ④ ;END;WRITELN(S);<6>一個(gè)漢字的機(jī)內(nèi)碼目前通常用二個(gè)字節(jié)來表示:第一個(gè)字節(jié)是區(qū)位碼的區(qū)號加(160)10;第二個(gè)字節(jié)是區(qū)位碼的位碼加(160)10 。已知:漢字“卻”的區(qū)位碼是4020,試寫出機(jī)內(nèi)碼兩個(gè)字節(jié)的二進(jìn)制的代碼:<7>已知ASCⅡ碼表中的大寫字母后有6個(gè)其它字符,接著便是小寫字母。現(xiàn)已知:A字母的ASCⅡ碼為(41)16{ 表示16進(jìn)制數(shù)41 },試寫出如下字母用十進(jìn)制表示的ASCⅡ碼:G → ( )10 b → ( )10 t → ( )10<8>下圖中用點(diǎn)表示城市,點(diǎn)與點(diǎn)之間的聯(lián)系表示城市間的道路:D CA B試問:①能否找出一條從A城市出發(fā),經(jīng)過圖中所有道路一次后又回到出發(fā)點(diǎn)的通路來?②能否從A出發(fā),找出去每個(gè)城市且只去一次的通路來?若能,則寫出通路,否則說明理由。<9>為了便于處理表達(dá)式,常常將普通表達(dá)式(稱為中綴表示)轉(zhuǎn)換為前綴{運(yùn)算符在前,如X/Y寫為/XY} 和后綴 { 運(yùn)算符在后,如X/Y寫為XY/}的表達(dá)形式。在這樣的表示中可以不用括號即可確定求值的順序,如:(P+Q)*(R-S)→*+PQ-RS 或 → PQ + RS -*試將下面的表達(dá)式改寫成前綴與后綴的表示形式: A+B*C/D A-C*D+B∧E ② 試將下面的前綴表示還原成中綴的表示形式,同時(shí)寫出后綴表示: +△A *B△C {前綴式中△表示一元運(yùn)算符取負(fù)號,如△A表示(-A)}<10>一個(gè)將角編了號的正三角形可以繞著外心O(中心)逆時(shí)針旋轉(zhuǎn)1200,如下圖所示:1 3●0 ●02 3 1 2圖一 圖二如果將這一旋轉(zhuǎn)用字母a 來表示,看作運(yùn)算對象,同時(shí)用aa或a2 表示旋轉(zhuǎn)1200后再旋轉(zhuǎn)1200 ,也就是說將連續(xù)運(yùn)動看作乘法運(yùn)算,那么三角形狀態(tài)(可簡稱為元素)即可與運(yùn)動表達(dá)式關(guān)聯(lián)起來,請回答:如果將圖一的原始三角形連續(xù)旋轉(zhuǎn)1200N次,簡單地表示為an (N為任意自然數(shù)),試求an 的值(指三角形旋轉(zhuǎn)后的結(jié)果狀態(tài)); ② 如果將下面的旋轉(zhuǎn)看作是a的逆元素,記為a-1 ,則有a-1 = a2試求:a-n3 1●0 ●01 2 2 3圖三根據(jù)題意,補(bǔ)充完善以下程序:1.[問題描述]:讀入n個(gè)不相同且不為0的數(shù)(1<=n<=100),不用排序,求出其中第r個(gè)大的數(shù)(1≤r≤n),即有r-1個(gè)數(shù)比它大,其余的數(shù)都比它小。例如:輸入3,14,22,15,17,6,其中第3個(gè)大的數(shù)為15。[算法說明]:以數(shù)組a[1..100]記錄讀入的n個(gè)數(shù),并以0結(jié)束(0本身不是n個(gè)數(shù)中的數(shù))。然后從第一個(gè)數(shù)開始,將它與其余的數(shù)進(jìn)行比較并記錄出比它大的數(shù)的個(gè)數(shù)(存于變量y中),若y=r-1時(shí),得到所求結(jié)果:否則對下一個(gè)數(shù)進(jìn)行同樣的處理。[程序清單]:program exp2(input,output)Var r,i,j,k,x,y : integer;a : array[1..100] of integer;p : boolean;Beginj:=0;readln(x);while ① dobegin② ;a[j]:=x;③end;readln(r); p:=true; i:=1;while p dobegin④ ; y:=0;for k:=1 to j doif xif ⑥ then beginwriteln(x);p:=falseendelse i:=i+1endEnd.2.[問題描述]:在進(jìn)行正整數(shù)的除法運(yùn)算時(shí),可以通過減法來實(shí)現(xiàn)。例如xy=Q..R(Q:商,R:余數(shù))可通過下列的方式實(shí)現(xiàn):q:=0; r:=x;while r>=y do begin r:=r-y; q:=q+1 end;結(jié)果,商在q中,余數(shù)在r中。[算法說明]:上面的算法有一個(gè)缺點(diǎn),就是當(dāng)x比較大、y比較小時(shí),則運(yùn)算的次數(shù)非常多,速度太慢。為提高速度,下面給出改進(jìn)的算法:先找一個(gè)非常接近x的數(shù)w,且滿足:w=y2k,y2 k-1<=x[程序清單]:program exp3(input,output)var x,y,w,r,q:integer;Beginreadln(x);r:=x;①while w<=r do ②q:=0;while ③ dobeginw:=w div 2;④if r>=w then begin⑤ ;R:= ⑥ ;end;end;writeln(q, ‘…’, R);End.3.[問題描述]:一個(gè)正整數(shù)(非素?cái)?shù))可以表示成它的因子(1與其本身除外)的乘積。例如:12有因子2,3,4,6,所以可表示為:12=223=43=26給出任一個(gè)正整數(shù)N,求出它所有的因子乘積的表達(dá)式(交換律得出的不同式子算同一種)。[算法說明]:讀入一個(gè)整數(shù)N,首先求出它的所有的因子以及每個(gè)因子可能的次數(shù)。例如:整數(shù)48:因子:2 3 4 6 8 12 16 24次數(shù):4 1 2 1 1 1 1 1將上面的結(jié)果存入數(shù)組A:ARRAY[0..20,1..2]中。其中:A[ ,1]表示因子;A[ ,2]表示次數(shù)。然后用簡單回溯的方法求出所有可能的表示:數(shù)組B[0..20]記錄取數(shù)情況:c:array[0..20]工作單元。[程序清單]:program exp4(input,output);var a : array[0..20,1..2] of integer;c,b : array[0..20] of integer;n,m,I,j,s,k,l : integer;BeginWRITELN;readln(n);for i:=1 to 20 do a[i,1]:=0;① ; a[0..2]:=1; j:=0;for i:=2 to n-1 dobegins:=0; m:=n;while(m<>0) and (m mod i=0) dobeginm:=m div i;② ;end;if ③ then beginj:=j+1; ④ ;a[j,2]:= ⑤ ;endend;for i:=0 to j do b[i]:=0;whil b[0]=0 dobegink:=j;while ⑥ do k:=k-1;b[k]:=b[k]+1;for L:= ⑦ do b[L]:=0;s:=1;for i:=1 to j doif b[i]<>0 then for L:=1 to b[i] do⑧ ;if s=n then beginfor i:=1 to j do c[i]:=b[i];WRITE(‘(‘); M:=1;for i:=1 to j dowhile(c[i]>0) and (M<>N) dobeginM:=MA[i.1];if M=N then write(a[i,j])else beginwrite(A[i,1],’’);c[i]:=c[i]-1;end;end;writeln(‘)’);endendEnd.EFaaa 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫