HKOI初赛高级组下列程序段中所有未有列出宣告Word下载.docx

上传人:b****6 文档编号:19632026 上传时间:2023-01-08 格式:DOCX 页数:26 大小:146.29KB
下载 相关 举报
HKOI初赛高级组下列程序段中所有未有列出宣告Word下载.docx_第1页
第1页 / 共26页
HKOI初赛高级组下列程序段中所有未有列出宣告Word下载.docx_第2页
第2页 / 共26页
HKOI初赛高级组下列程序段中所有未有列出宣告Word下载.docx_第3页
第3页 / 共26页
HKOI初赛高级组下列程序段中所有未有列出宣告Word下载.docx_第4页
第4页 / 共26页
HKOI初赛高级组下列程序段中所有未有列出宣告Word下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

HKOI初赛高级组下列程序段中所有未有列出宣告Word下载.docx

《HKOI初赛高级组下列程序段中所有未有列出宣告Word下载.docx》由会员分享,可在线阅读,更多相关《HKOI初赛高级组下列程序段中所有未有列出宣告Word下载.docx(26页珍藏版)》请在冰豆网上搜索。

HKOI初赛高级组下列程序段中所有未有列出宣告Word下载.docx

=b;

=tmp;

end;

z[0] 

=2;

z[1] 

=3;

z[2] 

=1;

z[3] 

=4;

z[4] 

=5;

fori:

=0to4do

forr 

=1to4do

ifz[r-1]>

z[r]then

swap(z[r-1],z[r]);

write(z[i],'

'

);

end.

C版本

#include<

stdio.h>

voidswap(inta,intb){

inttmp;

tmp=a;

a=b;

b=tmp;

}

intmain(){

intz[5],i,r;

z[0]=2;

z[1]=3;

z[2]=1;

z[3]=4;

z[4]=5;

for(i=0;

i<

5;

++i)

for(r=1;

r<

++r)

if(z[r-1]>

z[r])

printf("

%d"

z[i]);

return0;

 

A.12345

B.43251

C.23145

D.54321

5.在棋盤上,如果兩隻后處於同一行、同一列或同一對角線上,則它們相互攻擊。

問下列哪個/哪些敍述必定正確?

(i)在N×

N的棋盤上可以且最多可以放置N隻后,使得沒有任何兩隻后相互攻擊。

在N×

(N+1)的棋盤上,可以且最多可以放置(N+1)隻后使得沒有任何兩隻后相互攻擊。

B.只有(ii)

C.(i)與(ii)

D.兩者皆否

6.細閱以下程序段:

Pascal版本

ifn<

mthen

=n;

=m;

=t;

while(n*imodm<

>

0)do

=i+1;

{*}

writeln(n*i);

if(n<

m){

t=n;

n=m;

m=t;

i=1;

while(n*i 

%m 

!

=0)

i++;

//*

printf("

%d\n"

n*i);

以下哪個/哪些敍述是正確的?

(i)標示為{*}(C版本為//*)的程序碼不會被執行當且僅當程序段運行前,n是m的倍數。

(ii)此程序段尋找m和n的最小公倍數。

(iii)i的最大值是m+1.

C.只有(i)和(ii)

D.只有(ii)和(iii)

7.細閱以下函數﹕

proceduref(n,m,num 

vari 

ifn<

0then

fori 

=0tom-1do

f(n-1,m,num*10+i)

else

writeln(num);

voidf(intn,intm,intnum){

inti;

if(n 

=m-1;

f(n-1,m,num*10+i);

num);

假設n和m皆為正數,和上述函數不會引致溢位問題。

以下哪一/哪些關於呼叫f(n,m,0)的敍述為真?

(i)上述函數在不引致運行錯誤下結束。

(ii)輸出有mn行。

(iii)每行輸出都是一個n位數字。

A.只有(iii)

B.只有(i)和(ii)

C.只有(i)和(iii)

8.在一幅地圖上,有些城巿與城巿之間以雙向道路相連。

在任何旅程中,我們從任一城巿甲出發,探訪一些其他的城巿,再回到城巿甲。

除城巿甲外,每個城巿都只可以被探訪最多一次,而且我們不可以重複通過同一道路。

我們發現現有的地圖上,有最少一個旅程,而且所有旅程都剛好通過奇數數目的道路。

下列哪個敍述必定正確?

A.我們無法將城巿分成兩組,使得任何以道路直接相連的城巿都屬於不同的組別

B.城巿的數目必為奇數。

C.城巿數目超過一的地圖沒可能符合條件

D.以上皆非

9.一條隊列可以有以下的運作﹕

進隊﹕在隊尾插入一個元素

出隊﹕刪除在隊頭的元素

已知隊列中有n個元素。

你需要刪除現在在隊尾的元素但要保持其他元素的排列次序。

問你最少需要多少次運作去能達到目的。

A.1

B.2n-2

C.2n-1

D.2n

細閱以下資料,然後解答題10至11。

下列地圖中,圓形及線段分別代表城鎮和道路。

有一位商人打算以最少時間從城鎮甲走到城鎮乙。

假設走完一條道路需時一天。

10.問商人需要多少時間從城鎮甲走到城鎮乙?

A.2天

B.3天

C.4天

D.5天

11.不幸地,地震發生了。

其中一個城鎮被破壞了。

另外尚有一條道路被破壞了,而其他的道路和城鎮都完好無缺。

商人無法通過被破壞的道路,或任何連接被破壞的城鎮的道路。

幸運地,我們知道城鎮甲和城鎮乙完好無缺,且連接城鎮甲或城鎮乙的道路均沒有被破壞。

假設商人知道哪條道路和哪個城鎮被破壞,問商人從城鎮甲走到城鎮乙最多需要多少天?

A.3

B.4

C.5

D.無法確定

12.細閱以下程序段﹕

forj 

=0ton-1do

=0tom-2do

y[i] 

=x[i+1];

y[m-1] 

=x[0];

a:

=0;

b:

fori:

=0tom-1do

ify[i]<

x[(i+n)modm]then

a:

=1;

ify[i]=x[(m-n+i)modm]then

b:

for(j=0;

j<

n;

++j){

m-1;

y[i]=x[i+1];

y[m-1]=x[0];

a=0;

b=0;

for(i=0;

i<

m-1;

++i)

if(y[i]!

=x[(i+n) 

%m])

a=1;

i++)

=x[(m-n+i)%m])

b=1;

假設y[0..m-1](C版本為y[m])和x[0..m-1](C版本為x[m])為數列。

n和m

為正整數且n小於m。

在以上的程序段運行後,以下那個敍述是對的?

A.a的值為0

B.b的值為0

C.y是由把x倒轉而得出的

D.y的每個元素均與x中同位置的元素相等

13.細閱下列程序段:

temp 

=0;

fori 

=0to9do

temp 

=f(temp,A[i]);

writeln(temp);

temp=0;

for(i=0;

10;

++i)

temp=f(temp,A[i]);

temp);

設A[0..9]是一個正整數數列,且各元素均少於1000。

以下那個是敍述是錯的?

A.如果f(x,y)的傳回值是x+1,程序段的輸出就會是10

B.如果f(x,y)的傳回值是x和y的最大值,程序段的輸出就會是A數列中元素的最大值

C.如果f(x,y)的傳回值是x+y,程序段的輸出就會是A數列所有元素的總和

D.如果f(x,y)的傳回值是x*y,程序段的輸出就會是A數列所有元素的積

14.在假設溢位不會發生的情況下,以下哪個/哪些程序段可以將整數變量x和y的數值互換?

(i)

=2*x+2*y;

=2*y-x;

=x-y;

=ydiv2;

=xdiv2;

(ii)

=xdiv2+ydiv2;

=y-x;

=x*2;

=y*2;

x=2*x+2*y;

y=2*y-x;

x=x-y;

y=y/2;

x=x/2;

(ii)

x=x/2+y/2;

y=y-x;

x=x*2;

y=y*2;

A.只有(i)

B.只有(ii)

C.(i)和(ii)

15.細閱下列程序:

i:

longint;

whilei<

0do

begin

=i+2147483647;

end;

#include<

longi;

i=2;

while(i 

i=i+2147483647;

對於以上程序,以下哪個/哪些是正確的?

(i)程序不會停止運行。

(ii)程序會有運行錯誤。

(iii)如果將用{*}(CVersion為//*)標示的那行改為"

i:

=i+2147483647;

"

(C版本為"

i=i+2147483647+1;

),程序仍會正常地結束。

A.只有(i)和(ii)

B.只有(ii)和(iii)

C.(i)、(ii)和(iii)

D.三者皆非

16.在一個3x3的棋盤上,假設一隻棋子可以任意跳到一個未到達過的格子,而每一跳所需的能量為目的地與起跳點的垂直距離加上水平距離。

假設可以在任何一格開始,問到達所有其他格子所需的能量最大值和最小值分別是?

最小值

最大值

A.

8

18

B.

24

C.

11

15

D.

16

17.現有17枝火柴砌成的一個2x3的板。

在只移除其中兩枝不在最外圍的火柴的條件下,有多少種方法使板變為只有四個不重疊的長方形?

A.12

B.13

C.14

D.15

18.細閱以下程序﹕

X,Y 

readln(X,Y);

writeln((X-Y)mod6);

writeln(((Xmod6)-(Ymod6))mod6);

intX,Y;

intmain(){

scanf("

%d%d"

&

X,&

Y);

(X-Y) 

%6);

((X 

%6)-(Y 

%6)) 

以下那組X和Y的值會使以上程序輸出兩個不同的整數?

X

Y

1

3

4

10

9

13

19.已知函數random()會回傳由0到99的整數,以及函數abs(x)會回傳x的絕對值。

問以下那一/那些句子會製造由0至9(包括0和9)的整數?

(i)random()div100*10(C版本為random()/100*10)

(ii)random()div2div5(C版本為random()/2/5)

(iii)abs(random()-50)div5(C版本為abs(random()-50)/5)

A.只有(ii)

B.只有(iii)

細閱以下程序,然後解答題20至21。

var

string;

i,j 

='

110001'

;

=1to6do

ifs[i]='

0'

then

=(jshl1)or1;

1'

=jshr1;

writeln(j);

chars[]="

110001"

inti,j;

j=1;

6;

i++){

if(s[i]=='

j=(j<

<

1)|1;

if(s[i]=='

j>

}

j);

20.問上述程序段的輸出為何?

A.2

B.3

C.4

D.5

21.假設你能夠用其他字符串代替'

(C版本為"

)下列哪一/哪些是可能給出的輸出?

(i)7

(ii)9

(iii)16

(iv)31

B.只有(i)和(iii)

D.只有(ii)和(iv)

22.給出五個正整數,以下哪個/哪些敍述是正確?

(i)我們可以選擇最少一個數字使得它們的和為5的倍數。

(ii)我們可以選擇其中兩個正整數使得它們的和為奇數。

C.(i)和(ii)

23.設有N個學生。

若學生A和學生B是朋友,我們說A和B之間有一段友誼。

每段友誼只包括剛好兩個學生。

若兩段友誼所包括的兩對學生並不相同,這兩段友誼並不相等。

定義「能夠連絡」為﹕

1.若學生A和B是朋友,則A能夠連絡B,B亦能夠連絡A;

2.若學生A能夠連絡B,並且C是B的朋友,則A能夠連絡C,C亦能夠連絡A。

下列哪一/哪些敍述句正確?

A.最多可能的友誼數目為N2。

B.若最少有N-1段友誼,則每個學生都可以連絡其他學生。

C.若學生C並不能夠連絡學生A,則對於任何A能夠連絡的學生,C都不能夠連絡他們。

D.若所有學生都可以連絡其他學生,則一定存在最少N段友誼。

24.下列程序段的目的為何?

while(i<

n)and(i<

m)do

ifnmodi=mmodithen

=i;

writeln(k);

k=1;

i=2;

n&

&

%i==m 

%i)

k=i;

k);

A.尋找n+m的因數中少於min(n,m)的最大整數

B.尋找能同時整除m和n的最大整數

C.尋找|n-m|的最大因數

D.尋找少於min(n,m)並不整除m和n的最大整數

細閱以下資料,然後解答題25至26。

“Wordbot”是一種能夠跟據指令而行走的機器人。

指令是由小寫英文字母組成的字串。

Wordbot最初在上圖的圓形1並開始行走。

當Wordbot接收指令時,它會逐一處理指令中的每個字元。

對於每一個字元,它會嘗試尋找在其位置的圓形上,帶有字元並向外的箭號,並跟據此箭號行走。

若沒有此箭號,Wordbot便會退回圓形1。

若Wordbot到達圓形5,它便會發出「嗶」聲,並自行關機。

例如,若指令是「ray」,Wordbot便會從圓形1走到圓形2,然後再走到圓形3,最後回到圓形1。

25.Wordbot會發出「嗶」聲當且僅當

A.“r”、“a”和“e”都出現在指令中

B.“rare”一字出現在指令中

C.指令以“rare”為開首

D.“rarer”一字出現在指令中

26.如果由圓形4至圓形3帶有字元“a”的箭頭被移除,下列哪一/哪些敘述正確?

(i)即使「rare」沒有在指令中出現,Wordbot亦可能發出「嗶」聲。

(ii)即使「rare」在指令中出現,Wordbot亦可能不會發出「嗶」。

D.兩者皆否

27.問以下程序的輸出為何?

i,j,k 

=1to2009do

=k+imod2;

=k+imod4;

=k+imod6;

writeln(k);

inti,j,k;

k=0;

for(i=1;

i<

=2009;

++i){

k=k+i 

%2;

k=k+i 

%4;

%6;

return0;

A.2009

B.6027

C.9043

D.18086

28.在一個3列(row)、4行(column)的棋盤上,有多少方法可以放置6隻棋子,使得:

(i)沒有三隻棋子處於同一列,及

(ii)沒有三隻棋子處於同一行?

A.108

B.114

C.210

D.216

29.細閱以下程序﹕

functionF(x,y:

integer):

if(x=g)or(x=y)then

=1

=F(x-1,y-1)+F(x-1,y);

writeln(F(4,3));

writeln(F(4,2));

intg;

intF(intx,inty){

if(x==g||x==y)

return1;

else{

returnF(x-1,y-1)+F(x-1,y);

g=0;

F(4,3));

F(4,2));

以下那個/那些敍述必定正確?

(i)第一行的輸出為5。

(ii)所輸出的兩行是相等的。

(iii)如果標有{*}(C版本為//*)的那行改為g:

(C版本為g=1;

),以上程序所輸出的兩行是相等的。

30.細閱以下程序段﹕

=0to99do

x[i]:

x[0] 

=y[0];

whil

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1