2008年信息學奧賽初賽試題及答案

2008年信息學奧賽初賽試題及答案

2008年信息學奧賽初賽試題及答案是一整套試題以及答案解析。

單項選擇題,不定項選擇題,問題求解,閱讀寫結果,完善程式,參考答案,

單項選擇題

一、單項選擇題(共10題,每題1.5分,總計15分。每題有且僅有一個正確答案)。
參考圖片參考圖片
1.在以下各項中,( )不是作業系統軟體
A.Solaris B.Linux C.Sybase D.Windows Vista E.Symbian
2.微型計算機中,控制器的基本功能是( )。
A.控制機器的各個部件協調工作 B.實現算數運算與邏輯運算 C.存儲各種控制信息
D.獲取外部信息 E.存放程式和數據
3.設字元串S=“Olympic”,S的非空字串的數目是( )。
A.29 B.28 C.16 D.17 E.7
4.完全二叉樹有2*N-1的結點,則它的葉子結點數目是( )。
A.N-1 B.2*N C.N D.2N-1 E.N/2
5.將數組{8,23,4,16,77,-5,53,100}中元素從大到小按順序排序,每次可以交換任意兩個元素,最少要交換( )次。
A.4 B.5 C.6 D.7 E.8
6.設棧S的初始狀態為空,元素a,b,c,d,e,f依次入棧,出棧順序為b,d,c,f,e,a那么棧容量至少應該是( )。
A.6 B.5 C.4 D.3 E.2
7.與十進制數28.5625相等的四進制數是( )
A.123.21 B.131.22 C.130.22 D.130.21 E.130.20
8.遞歸過程和函式調用時,處理參數和返回地址,通常使用一種稱為( )的數據結構
A.佇列 B.多維數組 C.線性表 D.鍊表 E.棧
9.TCP/IP 是一組構成網際網路基礎的網路協定,字面上包括兩組協定:傳輸控制協定(TCP)和網際互聯協定(IP)。TCP/IP協定把Internet網路系統描述成具有4個層次功能的網路模型,其中提供源節點和目的節點之間的信息傳輸服務,包括定址和路由器選擇等功能的是()。
A.鏈路層 B.網路層 C.傳輸層 D.套用層 E.會話層
10.對有序數組{5,13,19,21,37,56,64,75,88,92,100}進行二分查找,等機率情況下,查找成功的平均查找長度(平均比較次數)是()。
A.35/11 B.34/11 C.33/11 D.32/11 E.34/10

不定項選擇題

二、不定項選擇題(共10題,每題1.5分,總計15分。每題正確答案的個數大於或等於1。多選或少選均不得分)。
11.下列關於圖靈的說法正確的有( )。
A.圖靈獎是美國計算機協會與1966年設立的,專門鼓勵那些對計算機做出重要貢獻的個人
B.圖靈獎有“計算機界諾貝爾獎”之稱。
C.迄今為止,還沒有華裔計算機科學家獲此殊榮。
D.圖靈獎的名稱取自計算機科學先驅、英國科學家阿蘭?圖靈。
12.計算機在工作過程中,若突然停電,( )中不會丟失信息不會丟失。
A.硬碟 B.CPU C.ROM D.RAM
13.若A=True,B=False,C=True,D=False,以下邏輯運算表達式真的有( )。
A.(A∧B)V(C∧DV¬A) B.((¬A∧B)VC)∧¬B
C.(BVCVD)VD∧A D.A∧(DV¬C)∧B
14.Web2.0是近年來網際網路熱門概念之一,其核心是互動與分享。下列網站中,( )是典型的Web2.0的套用。
A.Sina B.Flickr C.Yahoo D.Google
15.(2008)10+ (5B)16 的結果是()。
A.(833)16 B.(2099)10 C.(4063)8 D.(100001100011)2
16.二叉樹T,已知其先序遍歷是1 2 4 3 5 7 6(數字為節點編號,以下同),後序遍歷是4 2 7 5 6 3 1,則該二叉樹的中根遍歷是( )
A.4 2 1 7 5 3 6 B.2 4 1 7 5 3 6 C.4 2 1 7 5 6 4 D.2 4 1 5 7 3 6
17.面向對象的程式設計Object-Oriented Programming)是一種程式設計的方法論,它將對象作為程式設計的基本單元,將數據和程式封裝在對象中,以提高軟體的重用性、靈活性、和擴展性。下面關於面向對象的程式設計說法中正確的是( )。
A.面向對象的程式設計方法通常採用自頂向下的設計方法進行設計。
B.面向對象的程式設計方法具有繼承性(inheritance)、封裝性(encapsulation)、多態性(polymorphism)等幾大特點。
C.支持面向對象特性稱為面向對象的程式語言,較為流行的有C++,JAVA,C#等。
D.面向對象的程式設計的雛形來自於Simula語言,後來在SmallTalk語言的完善和標準化的過程中得到更多的擴展和對以前的思想的重新註解。至今,SmallTalk語言仍然被視為面向對象的基礎。
18.設T是一棵有n個定點的樹,以下說法正確的是( )。
A.T是聯通的,無環的 B.T是聯通的,有n-1條邊
C.T是無環的,有n-1條邊 D.以上都不對
19.NOIP競賽推薦使用的語言環境有( )。
A.Dev-C++ B.Visual C++ C.Free Pascal D.Lazarus
20.在下列防火牆Firewall)的說法中,正確的有( )。
A.防火牆是一項協助確保信息安全的設備,其會依照特定的規則,允許或是限制數據通過
B.防火牆可能是一台專屬硬體或是安裝在一般硬體上的一套軟體
C.網路層防火牆可以視為一種IP數據包過濾器,只允許符合特定規定的數據包通過,其餘的一概禁止穿越防火牆
D.套用層防火牆是在TCP/IP的“套用層”上工作,可以攔截進出某應用程式的所有數據包

問題求解

三、問題求解(共2題,每題5分,總計10分)
1.有6個城市,任何兩個城市之間有一條道路連線,6個城市之間兩兩之間的距離如下表表示,則城市1到城市6的最短距離為____________。
城市1 城市2 城市3 城市4 城市5 城市6
城市1 0 2 3 1 12 15
城市2 2 0 2 5 3 12
城市3 3 2 0 3 6 5
城市4 1 5 3 0 7 9
城市5 12 3 6 7 0 2
城市6 15 12 5 9 2 0
2.書架上有21本書,編號從1 到 21 從中選4 本,其中每兩本的編號都不相鄰的選法一共有___________________種。

閱讀寫結果

四、閱讀程式寫結果(共4題,每題8分,總計32分)。
1.var
i,a,b,c,d:integer;
f:array[0..3] of integer;
begin
for i:=0 to 3 do
read(f[i]);
a:=f[0]+f[1]+f[2]+f[3];
a:=a div f[0];
b:=f[0]+f[2]+f[3];
c:=(b*f[1]+a) div f[2];
d:=f[(b div c) mod 4];
if (f[(a+b+c+d) mod 4]>f[2]) then
begin
a:=a+b;
writeln(a)
end
else
begin
c:=c+d;
writeln(c);
end;
end.
輸入: 9 19 29 39
輸出:_______________________________
2.procedure foo(a,b,c:integer);
begin
if a>b then foo(c,a,b)
else
writeln(a,',',b,',',c)
end;
var a,b,c:integer;
begin
readln(a,b,c);
foo(a,b,c);
end.
輸入:2 1 3
輸出:_________________
3.procedure f(a,b,c:integer);
begin
write(a,b,c,'/');
if (a=3)and(b=2)and(c=1) then exit;
if (b<c) then f(a,c,b)
else
if a<b then
if a<c then f(c,a,b) else f(b,c,a);
end;
var a,b,c:integer;
begin
readln(a,b,c);
f(a,b,c);
end.
輸入:1 3 2
輸出:____________________
4.var
s:string;
i,j,len,k:integer;
begin
readln(s);
len:=length(s);
for i:=1 to len do
if (ord(s[i])>=ord('A')) and (ord(s[i])<=ord('Z')) then
s:=chr(ord(s[i])-ord('A')+ord('a'));
for i:=1 to len do
if (ord(s[i])<ord('X')) then s:=chr(ord(s[i])+3)
else
s:=chr(ord(s[i])-23);
write(s);
write('/');
for j:=1 to 3 do
begin
i:=1;
while i<=len-j do
begin
s[i]:=s[i+j];
i:=i+j;
end;
end;
writeln(s);
end.
輸入:ABCDEFGuvwxyz
輸出:________________________________

完善程式

五.完善程式(前6空,每空3分,後5空,每空2分,共28分)。
1.(找第k大的數)給定一個長度為1000000的無序正整數序列,以及另一個數n(1<=n<=1000000),接下來以類似快速排序的方法找到序列中第n大的數(關於第n大的數:例如序列{1,2,3,4,5,6}中第3大的數是4)
Var a:array[1..1000000] of integer;
n,m,ans:integer;
procedure swap(var a,b:integer);
var t:integer;
begin
if (a<>b) then begin
t:=a; a:=b; b:=t;
end;
end;
Function FindKth(left,right,n:integer):integer;
Var tmp,value,i,j:integer;
begin
if left=right then exit(left);
tmp:=random(right-left)+left;
swap(a[tmp],a[left]);
value:=____①_____
i:=left; j:=right;
while i<j do
begin
while (i<j) and (________②______) do dec(j);
if i<j then begin
a:=a[j];inc(i);
end else break;
while (i<j) and (___③___) do inc(i);
if i<j then begin
a[j]:=a[i]; dec(j);
end else break;
end;
____④_____
if i<n then begin inc(i); exit(FindKth(_____⑤_____));end;
if i>n then begin dec(j); exit(______⑥________);end;
exit(i);
end;
var i:integer;
begin
randomize;
ans:=-1;
m:=5;
for i:=1 to m do
read(a[i]);
read(n);
ans:=FindKth(1,m,n);
writeln(a[ans]);
end.
2.(矩陣中的數字)有一個n*n(1≤n≤5000)的矩陣a,對於1≤i<n, 1≤j≤n, a[i,j]<a[i+1,j] a[j,i]<a[j,i+1]。即矩陣中左右相鄰的兩個元素,右邊的元素一定比左邊的大。上下相鄰的兩個元素,下面的元素一定比上面的大。給定矩陣a中的一個數字k,找出k所在的行列(注意:輸入數據保證矩陣中的數各不相同)。
var
n,k,answerx,answery:integer;
a:array[1..5000,1..5000] of integer;
Procedure FindKPosition;
Var I,j:integer;
Begin
i:=n; j:=n;
while j>0 do begin
if a[n,j]<k then break;
dec(j);
end;
______①_________
while a[i,j]<>k do
begin
while (___②_____) and (i>1) do dec(i);
while (___③_____) and (j<=n) do inc(j);
end;
_______④________
_______⑤________
end;
var i,j:integer;
begin
read(n);
for i:=1 to n do
for j:=1 to n do
read(a[i,j]);
read(k);
FindKPosition;
writeln(answerx,' ',answery);
end.

參考答案

參考答案與評分標準
一、單項選擇題:(每題1.5分)
1. C 2. A 3. B 4. C 5. B
6. D 7. D 8. E 9. B 10. C
二、 不定項選擇題 (共10題,每題1.5分,總計15分。每題正確答案的個數大於或等於1。多選或少選均不得分)。
11. ABD 12. AC 13. BC 14. B 15. ABC
16. ABD 17. BCD 18. ABC 19. ACD 20. ABCD
三、問題求解:(共2題,每題5分,總計10分)
1.7
2.3060
四、閱讀程式寫結果(共4題,每題8分,總計32分)
1. 23 (信心題)
2. 1,3,2 (簡單遞歸)
3. 132/213/231/312/321/ (全排列
4. defghijxyzabc/hfizxjaybcccc (字元串替換)
五.完善程式 (前6空,每空3分,後5空,每空2分,共28分)
(說明:以下各程式填空可能還有一些等價的寫法,各省可請本省專家審定和上機驗證,不一定上報科學委員會審查)
1. ① a[left]
② a[j] < value (或a[j] <= value)
③ a[i] > value (或a[i] >= value)
④ a[i] := value;
⑤ i,right,n
⑥ FindKth(left, i, n)
2. ① inc(j); (或者j := j+1;)
② a[i,j] > k
③ a[i,j] < k
④ answerx := i;
⑤ answery := j;

相關詞條

熱門詞條

聯絡我們