資源簡介 第十三屆全國青少年信息學奧林匹克聯賽初賽試題( 普及組 Pascal 語言 二小時完成 ) ●● 全部試題答案均要求寫在答卷紙上,寫在試卷紙上一律無效 ●● 一、 單項選擇題 (共 10 題,每題 1.5 分,共計 15 分。每題有且僅有一個正確答案.)。 1. 在以下各項中。( )不是 CPU 的組成部分。A. 控制器 B. 運算器 C. 寄存器 D. 主板 2. 在關系數據庫中, 存放在數據庫中的數據的邏輯結構以( )為主。A. 二叉樹 B. 多叉樹 C. 哈希表 D. 二維表 3.在下列各項中,只有( )不是計算機存儲容量的常用單位。A. Byte B. KB C. UB D. TB 4.ASCII碼的含義是( )。A. 二—十進制轉換碼 B. 美國信息交換標準代碼 C. 數字的二進制數碼D. 計算機可處理字符的唯一編碼 5.一個完整的計算機系統應包括( )A.系統硬件和系統軟件 B. 硬件系統和軟件系統C.主機和外部設備 D.主機、鍵盤、顯示器和輔助存儲器 6.IT的含義是( )A.通信技術 B. 信息技術 C. 網絡技術 D. 信息學7. LAN的含義是( )。A. 因特網 B. 局域網 C. 廣域網 D. 城域網 8. 冗余數據是指可以由以他數據導出的數據,例如,數據庫中已存放了學生的數學、語文、和英語的三科成績,如果還存放三科成績的總分,則總分就可以看做冗余數據。冗余數據往往會造成數據的不一致,例如上面4個數據如果都是輸入的,由于操作錯誤使總分不等于三科成績之和,就會產生矛盾。下面關于冗余數據的說法中, 正確的是( )。A. 應該在數據庫中消除一切冗余數據B.用高級語言編寫的數據處理系統, 通常比用關系數據庫編寫的系統更容易消除冗余數據C. 為了提高查詢效率, 在數據庫中可以適當保留一些冗余數據, 但更新時要做相容性檢驗D. 做相容性檢驗會降低效率, 可以不理睬數據庫中的冗余數據 9. 在下列各軟件中,屬于 NOIP 競賽(復賽)推薦使用的語言環境有( )。 A. gcc B. g++C. Turbo C D. free pascal10. 以下斷電之后將仍能保存數據的有( )。A. 硬盤 B. 高速緩存 C. 顯存 D. RAM11. 在下列關于計算機語言的說法中,正確的有( )。A. 高級語言比匯編語言更高級, 是因為它的程序的運行效率更高B. 隨著Pascal、C等高級語言的出現, 機器語言和匯編語言已經退出了歷史舞臺C. 高級語言程序比匯編語言程序更容易從一種計算機移植到另一種計算機上D. C是一種面向過程的高級計算機語言 12. 近20年來, 許多計算機專家都大力推崇遞歸算法,認為它是解決較復雜問題的強有力的工具. 在下列關于遞歸的說法中, 正確的是( )。A. 在1977年前后形成標準的計算機高級語言"FORTRAN77"禁止在程序使用遞歸, 原因之一是該方法可能會占用更多的內存空間.B. 和非遞歸算法相比, 解決同一個問題, 遞歸算法一般運行得更快一些C. 對于較復雜的問題, 用遞歸方式編程往往比非遞歸方式更容易一些D. 對于已定義好的標準數學函數sin(x), 應用程序中的語句“y=sin(sin(x));”就是一種遞歸調用 13. 一個無法靠自身的控制終止的循環稱為“死循環”,例如在C語言程序中,語句“while(1)printf("*");”就是一個死循環,運行它將無休止地打印*號。下面關于死循環的說法中, 只有( )是正確的。A. 不存在一種算法, 對任何一個程序及相應的輸入數據, 都可以判斷是否會出現死循環, 因而, 任何編譯系統都不做死循環檢查B. 有些編譯系統可以檢測出死循環C. 死循環屬于語法錯誤, 既然編譯系統能檢查各種語法錯誤, 當然也能檢查出死循環D. 死循環與多進程中出現的“死鎖”差不多,而死鎖是可以檢測的,因而,死循環也是可以檢測的14. 在 Pascal 語言中,表達式 (23 or 2 xor 5)的值是( ) A. 18 B. 1 C.23 D.32 15. 在 Pascal 語言中,判斷整數a 等于 0 或b等于 0或c等于0 的正確的條件表達式是( )A. not ((a<>0) or (b<>0) or (c<>0))B. not ((a<>0) and (b<>0) and (c<>0))C. not ((a=0) and (b=0)) or (c=0)D.(a=0) and (b=0) and (c=0)16. 地面上有標號為A、B、C的3根細柱, 在A柱上放有10個直徑相同中間有孔的圓盤, 從上到下次依次編號為1, 2, 3, ……,將A柱上的部分盤子經過B柱移入C柱, 也可以在B柱上暫存。如果B柱上的操作記錄為:“進,進,出,進,進,出,出,進,進,出,進,出,出”。那么, 在C柱上, 從下到上的盤子的編號為( )。A. 2 4 3 6 5 7 B. 2 4 1 2 5 7 C. 2 4 3 1 7 6 D. 2 4 3 6 7 5 17. 與十進制數1770相對應的8進制數是( )。A. 3350 B. 3351 C. 3352 D. 3540 18. 設A=B=true,C=D=false,以下邏輯運算表達式值為真的有( )。A. (﹁A∧B)∨(C∧D∨A) B. ﹁ ( ( (A∧B)∨C)∧D)C. A∧(B∨C∨D)∨D D. (A∧(D∨C)) ∧B 19. (2070)16+(34)8的結果是( )。A. (8332)10 B. (208C)16C. (100000000110)2 D. (20214)820. 已知7個節點的二叉樹的先根遍歷是1 2 4 5 6 3 7(數字為結點的編號,以下同), 后根遍歷是4 6 5 2 7 3 1, 則該二叉樹的可能的中根遍歷是( )由收集 ( http: / / www. / " \t "_blank )A. 4 2 6 5 1 7 3 B. 4 2 5 6 1 3 7C. 4 2 3 1 5 4 7 D. 4 2 5 6 1 7 3 二.問題求解(共 2 題,每題 5 分,共計 10 分) 1.(子集劃分)將n 個數{1,2,3,…,n}劃分成r個子集。每個數都恰好屬于一個子集,任何兩個不同的子集沒有共同的數,也沒有空集。將不同劃分方法的總數記為S(n,r)。例如,S(4,2)=7,這7種不同的劃分方法依次為{(1),(234)},{(2),(134)},{(3),(123)},{(4),(123)},{(12),(34)},{(13),(24)},{(14),(23)}。當n=6, r=3時,S(6,3)= 。 (提示:先固定一個數,對于其余的5個數考慮S(5,3)與S(5,2),再分這兩種情況固定的數進行分析。 2.(最短路線)某城市的街道是一個很規整的矩形網絡(見下圖),有7條南北向的縱街,5條東西向的橫街。現要從西南的A走到東北角的B,最短的走法共有多少種? 。 三.閱讀程序寫結果(共 4 題,每題 8 分,共計 32 分)1.program j301;var i,a,b,c,x,y:integer;p:array[0..4] of integer;beginy:=20;for i:=0 to 4do read(p[i]);readln;a:=(p[0]+p[1])+(p[2]+p[3]+p[4]) div 7;b:=p[0]+p[1] div ((p[2]+p[3])div p[4]);c:=p[0]*p[1] div p[2];x:=a+b-p[(p[3]+3)mod 4];if(x>10)then y:=y+ (b*100-a) div(p[p[4] mod 3]*5)elsey:=y+20+(b*100-c)div (p[p[4] mod 3]*5);writeln(x,',',y);end.{注:本例中,給定的輸入數據可以避免分母為 0 或下標越界。}輸入:6 6 5 5 3 輸出:_______________2.program j302;var a,b:integer;var x,y:^integer;procedure fun(a,b:integer);var k:integer;begink:=a;a:=b;b:=k;end;begina:=3;b:=6;x:=@a;y:=@b;fun(x^,y^);writeln(a,',',b);end.輸出:_____________________________3.program j303;var a1:array[1..50] of integer;var i,j,t,t2,n,n2:integer;beginn:=50;for i:=1 to n do a1[i]:=0;n2:=round(sqrt(n));for i:=2 to n2 doif(a1[i]=0) thenbegint2:=n div i;for j:=2 to t2 do a1[i*j]:=1;end;t:=0;for i:=2 to n doif (a1[i]=0) thenbeginwrite(i:4); inc(t);if(t mod 10=0) then writeln;end;writeln;end.輸出: 4.program j304;type str1=string[100];str2=string[200];var s1:str1;s2:str2;function isalpha(c:char):boolean;var i:integer;begini:=ord(c);if ((i>=65) and (i<=90)) or((i>=97) and (i<=122)) thenisalpha:=trueelseisalpha:=false;end;function isdigit(c:char):boolean;var i:integer;begini:=ord(c);if (i>=48) and (i<=57) thenisdigit:=trueelseisdigit:=false;end;procedure expand(s1:str1;var s2:str2);var i,j:integer;a,b,c:char;beginj:=1; c:=char(1); i:=0;while(i<=ord(s1[0])) dobegininc(i); c:=s1[i];if c='-' thenbegin{1}writeln('i=',i);a:=s1[i-1]; b:=s1[i+1];if (isalpha(a) and isalpha(b))or (isdigit(a) and isdigit(b)) thenbeginwriteln('*****',a,'&',b);dec(j);while(ord(upcase(a))begin s2[j]:=a;inc(j);inc(a); end;endelsebegin s2[j]:=c;inc(j); end;end{1}elsebegin s2[j]:=c;inc(j); end;end;s2[0]:=char(j-2);end;beginwriteln('input s1:');readln(s1);expand(s1,s2);writeln(s2);end.輸入:wer2345d-h454-82qqq 輸出:四.完善程序 (前4 空,每空 2.5分,后 6 空,每空 3 分,共 28 分) 1.(求字符串的逆序) 下面的程序的功能是輸入若干行字符串,每輸入一行,就按逆序輸出該行,最后鍵入-1終止程序。 請將程序補充完整。program j401;type str1=string[100];var line:str1;kz:integer;procedure reverse(var s:str1);var i,j:integer;t:char;begini:=1; j:=length(s);while (ibegint:=s[i]; s[i]:=s[j]; s[j]:=t;①; ② ;end;end;beginwriteln('continue -1 for end.');readln(kz);while ( ③ ) dobeginreadln(line);④;writeln(line);writeln('continue -1 for end.');readln(kz);end;end.2.(棋盤覆蓋問題)在一個2K×2K個方格組成的棋盤中恰好有一個方格與其他方格不同(圖中標記為-1的方格),稱之為特殊方格。現用L型(占有3個小格)紙片覆蓋棋盤上除特殊方格的所有部分,各紙片不得重疊,于是,用到的紙片數恰好是(4K-1)/3.在下表給出的一個覆蓋方案中,K=2,相同的3個數字構成一個紙片。下面給出的程序是用分治法設計的,將棋盤一分為四,依次處理左上角、右上角、左下角、右下角,遞歸進行。請將程序補充完整。2 2 3 32 -1 1 34 1 1 54 4 5 5program j402;type arr1=array[1..65] of integer;arr2=array[1..65] of arr1;var board:arr2;tile:integer;size,dr,dc:integer;procedure chessboard(tr,tc:integer;dr,dc:integer;var size:integer);var t,s:integer;beginif (size=1) then ⑤;t:=tile; inc(tile);s:=size div 2;if ⑥thenchessboard(tr,tc,dr,dc,s)elsebeginboard[tr+s-1][tc+s-1]:=t;⑦;end;if(dr=tc+s) thenchessboard(tr,tc+s,dr,dc,s)elsebeginboard[tr+s-1][tc+s]:=t;⑧;end;if(dr>=tr+s) and(dcchessboard(tr+s,tc,dr,dc,s)elsebeginboard[tr+s][tc+s-1]:=t;⑨;end;if (dr>=tr+s) and (dc>=tc+s) thenchessboard(tr+s,tc+s,dr,dc,s)elsebeginboard[tr+s][tc+s]:=t;⑩;end;end;procedure prt1(n:integer);var i,j:integer;beginfor i:=1 to n dobeginfor j:=1 to n dowrite(board[i][j]:3);writeln;end;end;beginwriteln('input size(4/8/16/64):');readln(size);writeln('input the position of special block(x,y):');readln(dr,dc);board[dr][dc]:=-1;tile:=1;chessboard(1,1,dr,dc,size);prt1(size);end.NOIP2007年普及組(Pascal語言)參考答案與評分標準一、單項選擇題:(每題1.5分)1. D 2. D 3. C 4. B 5. B 6.B 7. B 8. C9. C 10. A11. C 12. A 13. A 14. A 15. B 16. D 17. C 18. D19. A 20. A二、問題求解:(每題 5分)1.902.210三、閱讀程序寫結果1. 15, 46(對1個數給4分,無逗號扣1分)2. 3, 63. 2 3 5 7 11 13 17 19 23 2931 37 41 43 474. wer2345defgh45456782qqq四、完善程序(前4空(①--④),每空2.5分,后6空(⑤--⑩),每空3分)(說明:以下各程序填空可能還有一些等價的寫法,各省可請本省專家審定和上機驗證,不一定上報科學委員會審查)1.① inc(i) 或i:=i+1② dec(j) 或 j:=j-1③ kz<>-1④ reverse(line)2. ⑤ exit⑥ (dr⑦ chessboard(tr,tc,tr+s-1,tc+s-1,s)⑧ chessboard(tr,tc+s,tr+s-1,tc+s,s)⑨ chessboard(tr+s,tc,tr+s,tc+s-1,s)⑩ chessboard(tr+s,tc+s,tr+s,tc+s,s)BA 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫