当前位置:首页 >> 学科竞赛 >> 1995-2012历年全国青少年信息学奥林匹克联赛初赛试题(包括答案)

1995-2012历年全国青少年信息学奥林匹克联赛初赛试题(包括答案)


第四届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题 (初中组) (PASCAL 语言 竞赛用时:2 小时)

●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、选择填空(25%) 1、操作系统是重要的系统软件,下面几个软件中不属于操作系统的是_______。 {1%} (A)MS-DOS (B)UCDOS (C)PASCAL (D)WIN

DOWS 95 {1%}

2、MS-DOS 系统对磁盘信息进行管理和使用是__________为单位的。 (A) 文件 (B) 盘片 (C) 字节 (D) 命令

3、在计算机内部用来传送、存贮、加工处理的数据或指令(命令)都是以___形式进行的.{1%} (A)十进制码 (B)智能拼音码 (C)二进制码 (D)五笔字型码

4.已知在计算机 C:\DOS 下有一个正确的 FORMAT.COM 文件,当执行如下命令: C:\> FORMAT A: < 回车 > 得到的回答是 BAD COMMAND OR FILE NAME 提示信息,下面解释正确的 是_____________。 (A) 根目录中没有 AUTOEXEC.BAT 文件 (B) 在执行该命令前操作者没执行过 PATH 命令 (C) C:\DOS 中的 FORMAT.COM 文件有错 (D) 由于 AUTOEXEC.BAT 或操作者最后执行过的 PATH 命令缺少路径 C:\DOS,或者根本没有执行 PATH 命令 5.将 A 盘上 50 个文件用 C:\>COPY A: *.* 命令复制到 C 盘的当前目录中,在复制到某一个文件时,由于读数 据出错,屏幕显示: ABORT, RETRG , IGNORE , FAIL ? 键入“I”后,继续复制没再出现过错误信息,最后复制的结果是_________。 (A)读数据出错的文件不正确,其他文件正确 (B)读数据出错的文件不正确,其它文件也不正确 (C)读数据出错的文件正确,其它文件不正确 (D)复制的文件完全正确 6.下面四个不同进制的数,最小的一个数是 (A) (11011001)2 (B) (75)10 (C) (37)8 。 (D) (A7)16 {3%} {2%} {2%} {2%}

7.小张用十六进制、八进制和十进制写了如下一个等式: 52 - 19 = 33 式中三个数是各不相同进位制的数,试问 52、19、33,分别为_________. (A)八进制,十进制,十六进制 (C)八进制,十六进制,十进制 (B)十进制,十六进制,八进制 (D)十进制,八进制,十六进制

1

8.如果用一个字节来表示整数,最高位用作符号位,其它位表示数值。例如:{4%} 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 表示+1 表示-1 1 ↑ 符号位表示正 ↑ 符号位表示负 ① 试问这样表示法的整数 A 的范围应该是_____________________。 (A) -127 ≤ A ≤ 127 (C) –128 ≤ A < 128 ② 在这样表示法中,以下 (B) -128 ≤ A ≤ 128 (D) -128 < A ≤ 128 说法是正确的。

(A)范围内的每一个数都只有唯一的格式 (B)范围内的每一个数都有两种格式 (C)范围内的一半数有两种格式 (D)范围内只有一个数有两种表示格式 9.下列 IF 语句中,ENDIF 表示相应 IF 的结束: y=0 if x<0 then Y=5 else if x<10 then y=10 if x<100 then y=100 endif else y=200 endif endif 试指出: 当 X=80 时,运行的结果是______; 当 X=5 时,运行结果为_________。 (A) Y=9 (B) Y=5 (C) Y=10 (D) Y=100 (E)Y=200 {4%}

10.设栈 S 的初始状态为空,现有 5 个元素组成的序列{1,2,3,4,5},对该序列在 S 栈上依次进行如下操作(从 序列中的 1 开始,出栈后不再进栈) :进栈、进栈、进栈,出栈、进栈、出栈、进栈。试问出栈的元素序列是 ______________。{4%} (A){ 5,4,3,2,1} 二、问题求解: (20%) 1.已知一个数列 U1,U2,U3,?,UN,? 往往可以找到一个最小的 K 值和 K 个数 a1,a2, ?,ak 使得数列从 某项开始都满足: UN+K=a1UN+K-1+a2UN+K-2+??+akUN U (A) 例如对斐波拉契数列 1,1,2,3,5,?可以发现:当 K=2,a1 =1,a2 =1 时,从第 3 项起(即 N>=1)都满足
n+2

(B){2,1}

(C){ 2,3}

(D){3,4}

=Un+1+Un 。 试 对 数 列 12 , 22 , 32 , ? , n2, ? 求 K 和 a1,a2, ? ,aK 使 得 ( A ) 式 成 立 。

{7%} 2.某班有 50 名学生,每位学生发一张调查卡,上写 a,b,c 三本书的书名,将读过的书打?,结果统计数字如下:
2

只读 a 者 8 人;只读 b 者 4 人;只读 c 者 3 人;全部读过的有 2 人;读过 a,b 两本书的有 4 人;读过 a,c 两 本书的有 2 人;读过 b,c 两本书的有 3 人;{6%} (1)读过 a 的人数是 (2)一本书也没有读过的人数是

3.任给自然数 n,k, 1≤K≤9 ,按如下计算步骤求序列 XJXJ-1??X0 的步骤:{8%} (1) j=0 (2) 如果 N>=K 则转第 3 步,否则转第 7 步 (3) Xj = N MOD K (4) N =N DIV K (5) j=j+1 (6) 回第 2 步 (7) Xj = N (8) 结束 试求当: N=1998, K=3 时,XJXJ-1??X0 之值。 三、阅读程序,写出程序的正确运行结果(39%) 1. Program exp1 (imput,output); Var i, a begin for i:=1 to 10 do max:=a[1] ;s:=a[1]; for i:=2 to 10 begin if s<0 then s:=0; s:= s+a[i]; if s>max then max:=s end; writeln(‘max=’, max) end. 输入:-2 13 -1 4 7 8 输出:max= 2. Program exp2 (input,output); {10%} -1 -18 24 6 do read (a[i]); s, max: integer; :array [1..10] of integer; (7%) {div 表示整数除法,结果取整数; mod 表示整除取余数}

Const n=5; Var i,j,k : integer; a : array[1..2*n, 1..2*n] of integer; Begin K:=1; For I:=1 to 2*n-1 do If i<=n then if odd(i) then for j:= I downto 1 do begin
3

a [I-j+1,j]:=k; end else for j: =1 begin a[i-j+1,j]:=k; end else if odd(i) then for j:=n begin a[I-j+1,j]:=k; end else for j:=I-n+1 to n do begin a[I-j+1,j]:=k; end; for I:=1 to n begin for j:=1 to n do write(a[I,j]:3); writeln end; end. 3. Program exp3 (input,output); Const N=10; Var S,I : integer; Function CO(I1:integer) : integer; VAR J1,S1 : integer; Begin S1:=N; do to i do

k:=k+1

k:=k+1; downto I-n+1 do

k:=k+1;

k:=k+1;

{10%}

For J1:= (N-1) downto (N-I1+1) do S1:= S1*J1 CO:=S1 End; Begin S:=N+1; For I:= 2 End. 4. Program exp4(input,output); Const N=3; VAR I,J,S,X :integer; P :array[0..n+1] of integer;
4

div (N-J1+1);

to N

do S:=S + CO(I);

Writeln(‘S=’,S);

{12%}

G Begin

:array[0..100] of integer;

For I := 0 to 100 do G[I]:=0; P[0]:=0; P[n+1]:=100; For I:= 1 to n do read (P[I]); readln; For I:= 0 to n do For J:= I+1 to N+1 do G[abs(P[J]-P[I])]:=G[abs(P[J]-P[I])]+1; S:=0; For I:=0 to 100 do Write(I,:4); S:=S+1; End; Writeln; writeln(‘S=’,S); Writeln(‘input data:’); readln(X); Writeln(G[x]) End. 输入:10 输出: 四、根据题意,补充完善以下程序: (14%) 输入一长度不超过 80 个字符的字符串(称为源串) ,该字符串由小写英文字母、空格组成,并以'.'结束。单词 是由连续字母组成,两个单词之间至少有一个空格。本程序的功能为:首先找出字符串中所有单词并保留一个空 格作为单词分隔,存入数组 ch 中。然后用键盘输入一个待查找的单词,以字符'$'结束。采用顺序查找的方法在 ch 中进行查找,若找到,则输出该单词在 ch 中出现的序号(若有多个位置出现该单词,则只输出第一个序号位置) 。 若不存在,则输出'NOT FOUND'。 程序如下: (14%) PROGRAM EXP1; VAR A,B,CH : ARRAY[1..80] OF CHAR; I,J,K,N,M : INTEGER; BEGIN N := 0; REPEAT _______1______; UNTIL A[N]='.'; READLN; K := 0; FOR I := 1 TO N DO BEGIN K := K + 1;
5

If G[I]>0 then begin

20

65

input data: 10

READ(A[N]);

1%

IF (A[I]>='a')AND(A[I]<='z') THEN

________2_________; END ELSE IF K <> 0 THEN BEGIN K := K + 1; CH[K] := '□' END; M := 0_________3________; REPEAT M := M + 1; READ(B[M]); UNTIL _______4_________; I := 1; J := 1; K := 1; B[M]:='□'; WHILE (I<=N)AND(J<=M) DO I := I + 1; J := J + 1 END BEGIN IF _________5________ THEN BEGIN ELSE BEGIN WHILE END END; IF _____7________ THEN WRITELN(K:4) ELSE WRITELN('NOT FOUND') END.

2%

IF CH[K]<>'□' THEN {□表示一个空格,以下同}

2%

2%

3%

CH[I] <> '□' DO ____6____; 2% I := I + 1; J := 1; K := K +1

2%

第四届全国青少年信息学(计算机)奥林匹克分区联赛初赛 (初中组) 参 考 答 案

一、选择填空:共 25 分 1.不属于操作系统的软件是 C 。 2.MS-DOS 系统对磁盘信息进行管理和使用是以 A 为单位的。 {1%} {1%}

3.在计算机内部,用来传送、存贮、加工处理的数据或指令(命令)都是以 C 形式进行的。 {1%} 4.解释正确的是 D。 5.最后复制的结果是 A 。 6.最小的一个数是 C 。 7.等式中的 52,19,33,分别为 B 。 8.① 这样表示法的整数 a 的范围应是 A 。 ② 在这样表示法中, D 说法是正确的。 E 。 {3%} {2%} {2%} {3%} {2%} {2%} {2%}
6

9.当 x=80 时,运行的结果为

当 x=5 时,运行的结果为 10.出栈的元素序列是 D

D 。



{2%} {4%}

二、问题求解:共 20 分 1.当 K= 3 ,a1,a2,…,ak 为 a1=3,a2=-3,a3=1 时, {3%+3%) {3%+4%} {7%}

对数列 122232,…,n2,…(A)成立。 2. (1)读过 a 的人数是 12 人。 (2)一本书也没读过的人数是 30 人。 3.当 n=1998,k=3 时,xjxj-1…x0 之值为 2202000 。

三、阅读程序,写出程序的正确运行结果:共 39 分 1.输出:max=42 2.输出结果为: 1 2 6 3 5 4 9 10 12 18 21 23 11 19 20 24 25 {10%} {12%} {7%} {10%}

8 13

7 14 17 15 16 22 3.输出:S=1024

4.输出:10 20 34 45 55 65 80 90 100 S=9 输入:input data:10 输出:2

四、根据题意,补充完善以下程序: (14%) PASCAL 语言 ① N:=N+1 ② CH[K]:=A[i] ③ N:=K ④ B[M]: ‘$’ ⑤ CH[i]=B[j] ⑥ i:=i+1 ⑦ j>M-1 ; ;{1%} ;{2%} ;{2%} ;{2%} {3%} {2%} {2%} BASIC 语言 30 N=N+1 100 CH$(K)=A$(I) 160 N=K 180 B$(M)<>“$” 210 CH$(I)=B$(J) 220 240 260 J>M-1

7

第五届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题 (普及组) (PASCAL 语言 竞赛用时:2 小时)

●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、选择一个正确答案代码(A/B/C/D) ,填入每题的括号内(每题 1.5 分,多选无分,共 30 分) 1.微机内的存储器的地址是以( )编址的。 A.二进制位 B.字长 C.字节 D.微处理器的型号 2.下列诸因素中,对微机工作影响最小的是( A.尘土 B.噪声 C.温度 ) 。 D.湿度 ) 。

3.在 24*24 点阵的字库中,汉字“一 ”与“编”的字模占用字节数分别是( A.32、32 B.32、72 C.72、72 D.72、32

4.将 DOS 系统盘插入 A 驱动器启动机器,随后使用一批应用软件,在此过程中,DOS 系统盘 ( A.必须始终插入在 A 驱动器中 B.不必再用 C.可能有时要插入 A 驱动器中 D.可能有时要插入 B 驱动器中 5.以下 DOS 命令中,有可能在磁盘上建立子目录的是 ( ) A.TYPE B.DIR C.XCOPY D.CD 6.在 CONFIG.SYS 文件中,装入特定可安装设备驱动程序的命令是 ( A.BUFFER B.FILES C.DRIVER D.DEVICE 7.计算机能直接执行的指令包括两部分,它们是( ) 。 A.源操作数与目标操作数 B.操作码与操作数 C.ASCII 码与汉字代码 D.数字与字符 8.在微机中,通用寄存器的位数是 ( ) 。 A.8 位 B.16 位 C.计算机字长 9.在计算机中,ASCII 码是( A.8 B.7 )位二进制代码。 C.12 ) 。

) 。

D.32 位

D.16

10.计算机的软件系统通常分为 ( ) 。 A.系统软件与应用软件 B.高级软件与一般软件 C.军用软件与民用软件 D.管理软件与控制软件 11.执行 DOS 命令:C:\ATTRIB A: *.* 的功能是 ( ) 。 A.查看 A 盘上所有文件属性 B.查看 A 盘上当前目录中所有文件属性 C.查看 A 盘上所有系统文件属性 D.删去 A 盘上所有隐含文件的属性 12.执行下列 DOS 命令,效果等价的是 ( )组。 A.COPY *.FOR 与 COPY *.FOR CON B.COPY A: *.* B: 与 XCOPY A: *.* B: C.COPY FILE1.TXT + FILE2.TXT 与 COPY FILE2.TXT +FILE1.TXT
8

D.XCOPY A: *.* B :/S



DISKCOPY

A: B: ) 。

13. 已知小写字母 “M” 的十六进制的 ASCⅡ码值是 6D, 则小写字母 “C” 的十六进制数的 ASCII 码值是 ( A.98 B.62 C.99 D.63 14.计算机中的数有浮点与定点数两种,其中用浮点数表示的数,通常由( )这两部分组成。 A.指数与基数 B.尾数与小数 C.阶码与尾数 D.整数与小数 15.下列文件名中,属于 DOS 中的保留设备名的为 ( A.AUX B.COM C.CON1 16.启动计算机引导 DOS 是将操作系统( A.从磁盘调入中央处理器 C.从软盘调入硬盘 ) 。 D.PRN1

) 。 B.从内存储器调入高速缓冲存储器 D.从系统盘调入内存储器

17.十进制算术表达式 :3*512 + 7*64 + 4*8 + 5 的运算结果,用二进制表示为( ) 。 A.10111100101 B.11111100101 C.11110100101 D.11111101101 18. “教授” 组成 (JIAO SHOU) 副教授” “ , (FU JIAO SHOU) “讲师” 与 (JIANG SHI)这三个词的汉字, GB2312-80 在 字符集中都是一级汉字,对这三个词排序的结果是( ) 。 A.教授、副教授、讲师 B.副教授、教授、讲师 C.讲师、副教授、教授 D.副教授、讲师、教授 19.不同的计算机,其指令系统也不相同,这主要取决于 ( ) 。 A.所用的操作系统 B.系统的总体结构 C.所用的 CPU D.所用的程序设计语言 20.对具有隐含属性(H)的当前目录下的文件 ab.txt, 能成功执行的 DOS 命令是( ) A.TYPE ab.txt B.COPY ab.txt xy.txt C.DIR ab.txt D.REN ab.txt xy.txt 二、回答问题(10 分) 在磁盘的目录结构中,我们将与某个子目录有关联的目录数称为度。例如下图

该图表达了 A 盘的目录结构:D1,Dll,…,D2 均表示子目录的名字。在这里,根目录的度为 2,D1 子目录的度 为 3,D11 子目录的度为 4,D12,D2,D111,D112,D113 的度均为 1。不考虑子目录的名字,则可简单的图示为如 下所示的树结构:

若知道一个磁盘的目录结构中,度为 2 的子目录有 2 个,度为 3 的子目录有 1 个,度为 4 的子目录有 3 个。 试问:度为 1 的子目录有几个? 三、公式推导(10 分) 根据 Nocomachns 定理,任何一个正整数 n 的立方一定可以表示成 n 个连续的奇数的和。
9

例如: 13= 1 23= 3+ 5 33= 7+ 9 +11 43= 13+15+17+19 在这里,若将每一个式中的最小奇数称为 X,那么当给出 n 之后,请写出 X 与 n 之间的关系表达式: 四、阅读程序,并写出程序的正确运行结果: (每题 15 分,共 30 分) 1.Program excpl; var x,y,y1,jk,j1,g,e:Integcr; a:array[l. .20]of 0. .9; begin x:=3465; y:=264; jk:=20; for j1:= 1 to 20 do a[j1]:= 0; while y< >0 do begin y1:=y mod 10; y:= y div 10; while y1<>0 do begin g:=x; for e:= Jk downto 1 do begin g:=g+a[e]; a[e ]:= g mod 10; g:= g div 10 end; y1:= y1- 1 end; jk:=jk-1 end; j1=1; while a[j1]=0 do j1:=J1+1; for Jk:=j1 to 20 do write(a[jk]:4) WRITELN End. 程序输出结果为:_________________________________ 2.program excp2 var i,j:integer;; a :array[1. .14] of integer; procedure sw(i1,j1:Integer); var k1: Integer; begin for k1:= 1 to(j1- i1+1) div 2 do begin
10

a[i1+k1-1]:=a[i1+ k1-1]+a[j1-k1+1]; a[j1-k1+1]:=a[i1+k1-1]-a[j1-k1+1]; a[i1+k1-1]:=a[i1-k1+1]-a[J1-k1+1]; end; end; begin j:=211; for i:=1 to 14 do begin a[i]:=i; J:=j-i end; sw(1,4) ; sw( 5,10); Sw(11,14) ;sw(1,14) ; For i:=1 to 14 do begin If j mod I=1 then write (a[i]:3); j:=j-a[i]; end; WRITElN end. 程序运行结果是:________________________________________ 五、根据题意,将程序补充完整(20 分) [问题描述] 下面程序的功能是从键盘读取 A,B 数组的元素,A,B 数组均已从小到大排好序(无相同元素) ,现将 A,B 合 并为数组 C,同样要求数组 C 也是从小到大排好序(有相同元素时只保留一个) 。 程序中 N 表示数组 A,B 的长度,i,j,k 分别表示数组 A,B,C 的取数或存数的指针。 [程序清单] program excp3; const n=8; m=2*n; type arr1=array[1..n]of integer; arr2=array[1..m]of integer; var a,b :arr1; c :arr2; i,j,k :integer; procedure copy(x:arr1;var y:arr2;var i,j:integer); begin i:=i+1;y[i]:=x[j];j:=j+1; end; begin for i:=1 to n do read(a[i]);readln; for i:=1 to n do read(b[i]);readln; i:=1;j:=1;___________①________ while__________②__________do. if a[i]<b[j] then copy (a,c,k,i) else if b[j]<a[i] then copy (b,c,k,j) else begin copy(a,c,k,i); __________③__________ end; while__________④___________do copy(a,c,k,i); while__________⑤___________do copy(b,c,k,j); for i:=1 to k do write (c[i]:4);
11

writeln; end.

第五届全国青少年信息学(计算机)奥林匹克分区联赛初赛 (普及组) 参 考 答 案
一、选择一个正确答案代码(A/B/C/D) ,填入每题的括号内(每题 1.5 分,多选无分,共 30 分) 题号 选择 题号 选择 1 C 11 B 2 B 12 B 3 C 13 D 4 C 14 C 5 C 15 A 6 D 16 D 7 B 17 B 8 C 18 D 9 A 19 C 10 A 20 A

二、回答问题: (10 分) 答:度为 1 的子目录有 9 个 三、公式推导(10 分) 给出 n 之后,X 与 n 之间的关系表达式为: N2-N+1 四、阅读程序,并写出程序的正确运行结果: (每题 1.5 分,共 30 分) (1)程序的运行结果是: 9 1 4 7 6 0 (2)程序的运行结果是: 12 5 10 五、根据题意,将程序补充完整(20 分,每空 4 分) PASCAL 语言 ========================== ① k:=0 ② (i<=n)and (j<=n) ③ j:=j+1 ④ i<=n ⑤ j<=n BASIC 语言 ========================= 85 k=0 90 (j>n) OR(i>n) 135 j=j+1 150 I>N 180 j>N

12

第六届全国青少年信息学(计算机)奥林匹克分区联赛试题
( 普及组 PASCAL 语言 二小时完成 )

●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●● 一、选择一个正确答案代码(A/B/C/D) ,填入每题的括号内 (每题 1.5 分,多选无分,共 30 分) 1.下列无符号数中,最小的数是( A. (11011001)2 B. (75)10 ) . C. (37)8

D. (2A)16

2.在外部设备中,绘图仪属于( ) . A.输入设备 B.输出设备

C.辅(外)存储器

D.主(内)存储器 )为序排列的.

3.GB2312-80 规定了一级汉字 3755 个,二级汉字 3008 个,其中二级汉字字库中的汉字是以( A.以笔划多少 B.以部首 C.以 ASCII 码 D.以机内码 4.算法是指( ) . A.为解决问题而编制的计算机程序 C.为解决问题而需要采用的计算机语言 5.RAM 中的信息是( ) . A.生产厂家预先写入的 C.防止计算机病毒侵入所使用的

B.为解决问题而采取的方法与步骤 D.为解决问题而采用的计算方法

B.计算机工作时随机写入的 D.专门用于计算机开机时自检用的

6.计算机主机是由 CPU 与( )构成的. A.控制器 B.运算器 C.输入、输出设备 7.计算机病毒的特点是( ) . A.传播性、潜伏性、易读性与隐蔽性 C.传播性、潜伏性、破坏性与隐蔽性

D.内存储器

B.破坏性、传播性、潜伏性与安全性 D.传播性、潜伏性、破坏性与易读性

8.设循环队列中数组的下标范围是 1–n,其头尾指针分别为 f 和 r,则其元素个数为( ) . A.r- f B.r- f +1 C. f ) MOD n+1 (rD. f + n) MOD n (r9.在待排序的数据表已经为有序时,下列排序算法中花费时间反而多的是( A 堆排序 B 希尔排序 C 冒泡排序 D 快速排序 10.Internet 的规范译名应为( ) . A.英特尔网 B.因特网 C. 万维网 D.以太网 11.WINDOWS 9X 是一种( )操作系统. A.单任务字符方式 B.单任务图形方式 C.多任务字符方式 D.多任务图形方式 12.某种计算机的内存容量是 640K, 这里的 640K 容量是指( A.640 B. 640*1000 C. 640 * 1024 ) 个字节. D.640*1024*1024
13

) .

13.在 Windows 9X 中,菜单项后带有符号“?” ,表示该菜单项( A.可以进行开关选择 B.执行时有对话框 C.有若干子命令 D.不能执行

) .

14.某数列有 1000 个各不相同的单元,由低至高按序排列;现要对该数列进行二分法检索(binary search),在最坏的情 況下,需检视( )个单元. A.1000 B. 10 C. 100 D. 500 15.已知数组 A 中,每个元素 A[I,J]在存贮时要占 3 个字节,设 I 从 1 变化到 8,J 从 1 变化到 10,分配内存时是从 地址 SA 开始连续按行存贮分配的。 试问:A[5,8]的起始地址为( ) . A.SA+141 B.SA+180 C.SA+222 D.SA+225 16.大家知道,不同类型的存储器组成了多层次结构的存储器体系,按存取速度从快到慢的排列是( A.快存 / 辅存 / 主存 B.外存 / 主存 / 辅存 C.快存 / 主存 / 辅存 D.主存 / 辅存 / 外存 17.线性表若采用链表存贮结构,要求内存中可用存贮单元地址( A.必须连续 B.部分地址必须连续 C.一定不连续 D.连续不连续均可 18.下列叙述中,正确的是( ) . A. 线性表的线性存贮结构优于链表存贮结构 B. 队列的操作方式是先进后出 C. 栈的操作方式是先进先出 D.二维数组是指它的每个数据元素为一个线性表的线性表 19.电线上停着两种鸟(A,B) ,可以看出两只相邻的鸟就将电线分为了一个线段。这些线段可分为两类:一类是两 端的小鸟相同;另一类则是两端的小鸟不相同. 已知:电线两个顶点上正好停着相同的小鸟,试问两端为不同小鸟的线段数目一定是( ) . A.奇数 B.偶数 C.可奇可偶 D.数目固定 ) . ) .

20.请仔細閱读下列程序段: PASCAL 语言 var a:array[1..3,1..4] of integer; b:array[1..4,1..3] of integer; x,y:integer; begin for x:=1 to 3 do for y:=1 to 4 do a[x,y]:=x-y; for x:=4 downto 1 do for y:=1 to 3 do b[x,y]:=a[y,x]; writeln(b[3,2]); end.

BASIC 语言 DIM A(3,4), B(4,3) FOR X=1 TO 3 FOR Y=1 TO 4 A(X,Y)=X-Y NEXT Y , X FOR X=4 TO 1 STEP -1 FOR Y=1 TO 3 B(X,Y)=A(Y,X) NEXT Y, X PRINT B(3,2) END

14

上列程序段的正确輸出是( A.-1 B.-2

). C.-3 D.-4

二、问题解答(每题 7 分,共 14 分) 1.已知,按中序遍历二叉树的结果为:abc 问:有多少种不同形态的二叉树可以得到这一遍历结果,并画出这些二叉树。 2.有 2×n 的一个长方形方格,用一个 1×2 的骨牌铺满方格。例如 n=3 时,为 2×3 方格。 此时用一个 1×2 的骨牌铺满方格,共有 3 种铺法:

试对给出的任意一个 n(n>0) ,求出铺法总数的递推公式。 三、阅读程序,并写出程序正确的运行结果(10+16 分,共 26 分) 1.PROGRAM NOI_002; VAR I, J, L, N, K, S, T : INTEGER; B : ARRAY[1..10] OF 0..9; BEGIN READLN(L,N); S:=L; K:=1; T:=L; WHILE S<N DO BEGIN K:=K+1; T:=T*L; S:=S+T END; S:=S-T; N:=N-S-1; FOR I:=1 TO 10 DO B[I]:=0; J:=11; WHILE N>0 DO BEGIN J:=J-1; B[J]:=N MOD L; N:=N DIV L END; FOR I:=10-K+1 TO 10 DO WRITE(CHR(ORD('A')+B[I])); END. 输入: 4 167 输出: 2.PROGRAM NOI_004; VAR I, J, J1, J2, P, Q : INTEGER; P1 : BOOLEAN; B,C : ARRAY[1..100] OF INTEGER; BEGIN READLN(Q,P); J:=1; P1:=TRUE; B[J]:=Q; J1:=0; WHILE (Q>0) AND P1 DO BEGIN J1:=J1+1; C[J1]:=Q*10 DIV P; Q:=Q*10-C[J1]*P; IF Q>0 THEN BEGIN J2:=1; WHILE (B[J2]<>Q) AND (J2<=J) DO J2:=J2+1; IF B[J2]=Q THEN
15

ELSE END END; IF Q=0 THEN

BEGIN P1:=FALSE; WRITE('0.'); FOR I:=1 TO J2-1 DO WRITE(C[I]:1); WRITE('{'); FOR I:=J2 TO J1 DO WRITE(C[I]:1); WRITELN('}') END BEGIN J:=J+1; B[J]:=Q END

BEGIN WRITE('0.'); FOR I:=1 TO J1 DO WRITELN END; READLN 输出 输出

WRITE(C[I]:1);

END. 输入 输入

① 1 ② 2

8 7

四、完善程序(每题 15 分,共 30 分) n n 1. 将 2 个 0 和 2 个 1,排成一圈。从任一个位置开始,每次按逆时针的方向以长度为 n+1 的单位进行数二进制数。 n+1 要求给出一种排法,用上面的方法产生出来的 2 个二进制数都不相同。 2 2 例如,当 n=2 时, 即2 个 0 和2 个 1 排成如下一圈: A 0

B 0 C 0 D 1
0

1 H 1G 1 F


比如,从 A 位置开始,逆时针方向取三个数 000,然后再从 B 位置上开始取三个数 001,接着从 C 开始取三个数 010,. ..可以得到 000,001,010,101,011,111,110,100 共 8 个二进制数且都不相同。

程序说明
以 n=4 为例,即有 16 个 0,16 个 1, 数组 a 用以记录 32 个 0,1 的排法, 数组 b 统计二进制数是否已出现过。

程序清单
PROGRAM NOI00; VAR A : ARRAY[1..36] OF 0..1; B :ARRAY[0..31] OF INTEGER; I, J, K, S, P : INTEGER; BEGIN FOR I:=1 TO 36 DO A[I]:=0;
16

FOR I:=28 TO 32 DO A[I]:=1; P:=1; A[6]:=1; WHILE (P=1) DO BEGIN J:=27; WHILE A[J]=1 DO J:=J-1; ① FOR I:=J+1 TO 27 DO ② FOR I:=0 TO 31 DO B[I]:=0; FOR I:=1 TO 32 DO BEGIN ③ FOR K:=I TO I+4 DO S:=S*2+A[K]; ④ END; S:=0; FOR I:=0 TO 31 DO S:=S+B[I]; IF ⑤ THEN P:=0 END; FOR I:=1 TO 32 DO FOR J:=I TO I+4 DO WRITE(A[J]); WRITELN END. 2.多项式的乘法。 例如有如下多项式: 2 P(X)=2X -X+1, Q(X)=X+1 则: 2 3 2 P(X)·Q(X)=(2X -X+1)(X+1)=2X +X +1

程序说明:
多项式的表示:系数、指数 如上例中: P(X): 系数 指数 Q(X) 系数 指数 2 2 1 1 -1 1 1 0 1 0 0 0 0 0 PXQ 的结果存入 C 中。其输出格式是:依次用一对括号内的(系数,指数)分别来表示。如上例的输出结果表示为: (2,3) (1,2) (1,0)

程序清单
PROGRAM NOI_007; VAR I, J, K, L , JP, JQ, JC, X, Y, X1, Y1 : INTEGER; P, Q : ARRAY[1..10,1..2] OF INTEGER; C : ARRAY[1..20,1..2] OF INTEGER; BEGIN JP:=0; READLN(X,Y);
17

WHILE X<>0 DO BEGIN JP:=JP+1; P[JP,1]:=X; P[JP,2]:=Y; READLN(X,Y) JQ:=0; READLN(X,Y); WHILE X<>0 DO BEGIN JQ:=JQ+1; Q[JQ,1]:=X; Q[JQ,2]:=Y; READLN(X,Y)

END;

END;

JC:=1; C[JC,1]:=0; C[JC,2]:=-1000; FOR I:=1 TO JP DO BEGIN ① Y:=P[I,2]; FOR J:=1 TO JQ DO BEGIN ② Y1:=Y+Q[J,2]; K:=1; WHILE Y1<C[K,2] DO K:=K+1; IF Y1=C[K,2] THEN ③ ELSE BEGIN FOR L:=JC DOWNTO K DO BEGIN C[L+1,1]:=C[L,1]; C[L+1,2]:=C[L,2] END; C[K,1]:=X1; C[K,2]:=Y1; ④ END END END; FOR I:=1 TO JC DO IF ⑤ THEN WRITE(‘ ,C[I,1],‘,,C[I,2],')'); (’ ’ READLN END.

赛区



学校

姓名

========================== 密



线

=======================

第六届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题
普及组答卷纸
18

阅 总阅卷人 第 题号 得分 题号 得分 11 12 13 14 15 1 一 2 3 大 4 题 5

卷 得 6 16 7 17 8 18 分 9 19

记 第二大题得分 10 20 第三大题得分 (1) 第四大题得分 (1) (2) (2)

录 总 得 分

============================= 以下由考生填写 =============================

答卷部分
一、 题号 选择 题号 选择 11 12 13 14 15 16 17 18 19 20 选择一个正确答案代码(A/B/C/D) ,填入每题的括号内 (每题 1.5 分,多选无分,共 30 分) 1 2 3 4 5 6 7 8 9 10

二、问题解答(共 14 分) 1. 答:有 种不同形态的二叉树可以得到这一遍历结果; 可画出的这些二叉树为: (5 分) (2 分)

2. 对给出的任意一个 n(n>0) 用 F(N)表示其铺法的总数的递推公式为: ,

(7 分)

赛区



学校

姓名

========================== 密



线

=======================

三、阅读程序,并写出程序的正确运行结果(10+16 分,共 26 分)

(1) 程序的运行结果是:
19

(2)

程序的运行结果是:

四、根据题意,将程序补充完整(每个点 3 分,共 30 分) PASCAL 语言 ================= 题一 ① ② ③ ④ ⑤ BASIC 语言 =================

70 110 140 180 220

题二 ① ② ③ ④ ⑤

190 240 280 300 350

第六届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题普及组参考答案

一、选择一个正确答案代码(A/B/C/D) ,填入每题的括号内 (每题 1.5 分,多选无分,共 30 分) 1 2 4 5 6 7 8 9 10 题号 3 选择 C B B B B D C D D B
20

题号

11

12

13

14

15

16

17

18

19

20

D C B B A C D D B A 选择 二、问题解答(第 1 题的第 1 问 2 分,第 2 问 5 分,第 2 题 7 分,两题共 14 分) 1.答:有 5 种不同形态的二叉树可以得到这一遍历结果;可画出的这些二叉树为: ① a ② b ③ a ④ c ⑤ c \ / \ \ / / b a c c a b \ / \ / c b b a 2.对给出的任意一个 n(n>0) ,用 F(n)表示其铺法的总数的递推公式为: F(1)=1 F(2)=2 F(n)=F(n-2)+F(n-1) (n≥3) 三、阅读程序,并写出程序的正确运行结果(10+16 分,共 26 分) (1) 程序的运行结果是: BBAC (2) 程序的运行结果是: ① 0.125

② 0.{285714}
四、根据题意,将程序补充完整(每个点 3 分,共 30 分) PASCAL 语言 BASIC 语言 ================= ================= 题一 ① A[J]:=1; 70 A(J) = 0 ② ③ ④ ⑤ A[I]:=0; S:=0; B[S]:=1; S=32 110 140 180 220 A(I) = 0 S = 0 B(S) = 1 S < 32

题二 ① X:=P[I,1]; ② ③ ④ ⑤ X1:=X*Q[J,1]; C[K,1]:=C[K,1]+X1 JC:=JC+1 C[I,1]<>0

190 240 280 300 350

X * Q(J, 1) Y1 = C(K, 2) GOTO 320 C(K, 1) + X1 C(I, 1) = 0

21

第七届全国青少年信息学(计算机)奥林匹克分区联赛试题(普及组 PASCAL) (普及组 PASCAL 语言 二小时完成)

一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题 1.5 分,多选无分,共 30 分) 1.在计算机内部,一切信息存取、处理和传递的形式是( ) A)ASCII 码 B)BCD 码 C)二进制 D)十六进制 2.在树型目录结构中,不允许两个文件名相同主要指的是( ) A)同一个磁盘的不同目录下 C)不同磁盘的不同目录下 3.WORD 是一种( ) A)操作系统 B)文字处理软件 C)多媒体制作软件 D)网络浏览器 4.计算机软件保护法是用来保护软件( )的。 A)编写权 B)复制权 C)使用权 D)著作权 B)不同磁盘的同一个目录下 C)同一个磁盘的同一个目录下

5.下面关于算法的错误说法是( ) A)算法必须有输出 B)算法必须在计算机上用某种语言实现

C)算法不一定有输入 D)算法必须在有限步执行后能结束 6.解释程序的功能是( ) A)将高级语言程序转换为目标程序 C)解释执行高级语言程序 B)将汇编语言程序转换为目标程序 D)解释执行汇编语言程序

7.与二进制数 101.01011 等值的十六进制数为( ) A)A.B B)5.51 C)A.51 D)5.58 8.断电后计算机信息依然存在的部件为( ) A)寄存器 B)RAM 存储器 C)ROM 存储 D)运算器 9.2KB 的内存能存储( )个汉字的机内码 A)1024 B)516 C)2048 D)218

10.DOS 暂驻区中的程序主要是用于( ) A)执行 DOS 内部命令 B)执行 DOS 外部命令 22

C)执行 DOS 所有命令 D)基本输入输出 11.若我们说一个微机的 CPU 是用的 PII300,此处的 300 确切指的是( ) A)CPU 的主时钟频率 C)每秒执行 300 百万条指令 12.运算 17 MOD 4 的结果是( ) A)7 B)3 C)1 D)4 13.应用软件和系统软件的相互关系是( ) A)后者以前为基础 B)前者以后者为基础 B)CPU 产品的系列号 D)此种 CPU 允许最大内存容量

C)每一类都以另一类为基础 D)每一类都不以另一类为基础 14.以下对 Windows 的叙述中,正确的是( ) A)从软盘上删除的文件和文件夹,不送到回收站 B)在同一个文件夹中,可以创建两个同类、同名的文件 C)删除了某个应用程序的快捷方式,将删除该应用程序对应的文件 D)不能打开两个写字板应用程序 15.Email 邮件本质上是一个( ) A)文件 B)电报 C)电话 D)传真

16.计算机病毒是( ) A)通过计算机传播的危害人体健康的一种病毒 B)人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合 C)一种由于计算机元器件老化而产生的对生态环境有害的物质 D)利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒 17.下列设备哪一项不是计算机输入设备( ) A)鼠标 B)扫描仪 C)数字化仪 D)绘图仪

18.在计算机硬件系统中,cache 是( )存储器 A)只读 B)可编程只读 C)可擦除可编程只读 D)高速缓冲

19.在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找 12,所需的关键码比较的次数为( ) 23

A)2

B)3

C)4

D)5

20.若已知一个栈的入栈顺序是 1,2,3,?,n,其输出序列为 P1,P2,P3,?,Pn,若 P1 是 n,则 Pi 是( ) A)i B)n-1 C)n-i+1 D)不确定

二、问题求解(5+7=12 分) 1.在 a,b,c,d,e,f 六件物品中,按下面的条件能选出的物品是: (1)a,b 两样至少有一样 (2)a,d 不能同时取 (3)a,e,f 中必须有 2 样 (4)b,c 要么都选,要么都不选 (5)c,d 两样中选一样 (6)若 d 不选,则 e 也不选 2.平面上有三条平行直线,每条直线上分别有 7,5,6 个点,且不同直线上三个点都不在同一条直线上。问用这些点为顶点,能组成多少 个不同三角形? 三、阅读程序,写出正确的程序运行结果(5+8+9+9=31 分) 1.PROGRAM CHU7_1; FUNCTION FUN(X:INTEGER):INTEGER; BEGIN IF(X=0)OR(X=1)THEN FUN:=3 ELSE FUN:=X-FUN(X-2) END; BEGIN WRITELN(FUN(9)); READLN; END. 输出: 2.PROGRAM CHU7_2; VAR I,J,F:INTEGER; A:ARRAY[1..8]OF INTEGER; BEGIN FOR I:=1 TO 8 DO BEGIN F:=I MOD 2; IF F=0 THEN A[I]:=0 ELSE A[I]:=1; 24

FOR J:=1 TO I DO IF F=0 THEN A[I]:=A[I]+J ELSE A[I]:=A[I]*J END; FOR I:=1 TO 8 DO WRITE(A[I]:5); END. 输出 3.PROGRAM CHU7_3; VAR P,Q,S,T:INTEGER; BEGIN READLN(P); FOR Q:=P+1 TO 2*P DO BEGIN T:=0; S:=(P*Q)MOD(Q-P); IF S=0 THEN BEGIN T:=P+Q+(P*Q)DIV(Q-P); WRITE(T:4); END; END; READLN END. 输入:12 输出: 4.PRGORAM CHU7_4; VAR N,K,I:INTEGER; A:ARRAY[1..40]OF INTEGER; PROCEDURE FIND(X:INTEGER); VAR S,I1,J1:INTEGER; P:BOOLEAN; BEGIN I1:=0; P:=TRUE; WHILE P DO BEGIN I1:=I1+1; S:=0; FOR J1:=1 TO N DO IF A[J1]>A[I1]THEN S:=S+1; IF(S=X-1)THEN BEGIN WRITELN(A[I1]); P:=FALSE END; 25

END END; BEGIN READLN(N,K); FOR I:=1 TO N DO READ(A[I]); FIND(K); FIND(N-K); END. 输入:10 4 12 34 5 65 67 87 7 90 120 13 输出: 四、完善程序(每空 3 分 共 27 分) 1.输入 n 个 0 到 100 之间的整数,由小到大排序输出,每行输出 8 个 程序清单: PROGRAM CHU7_5; VAR I,J,K,N,X:INTEGER; B:ARRAY[0..100]OF INTEGER; BEGIN READLN(N); FOR I:=0 TO 100 DO B[I]:=0; FOR I:=1 TO N DO BEGIN READLN(X); B[X]:= END; ② FOR I:=0 TO 100 DO WHILE BEGIN WRITE( ④ ); K:=K+1; B[I]:=B[I]-1; IF END; READLN END. 2.在 A,B 两个城市之间设有 N 个路站(如下图中的 S1,且 N<100),城市与路站之间、路站和路站之间各有若干条路段(各路段数≤20,且 每条路段上的距离均为一个整数)。 A,B 的一条通路是指:从 A 出发,可经过任一路段到达 S1,再从 S1 出发经过任一路段,?最后到达 B。通路上路段距离之和称为通路 距离(最大距离≤1000)。当所有的路段距离给出之后,求出所有不同距离的通路个数(相同距离仅记一次)。 26 ⑤ THEN WRITELN ③ DO ①

例如:下图所示是当 N=1 时的情况:

从 A 到 B 的通路条数为 6,但因其中通路 5+5=4+6,所以满足条件的不同距离的通路条数为 5。 算法说明:本题采用穷举算法。 数据结构:N:记录 A,B 间路站的个数 数组 D[I,0]记录第 I-1 到第 I 路站间路段的个数 D[I,1],D[I,2],?记录每个路段距离 数组 G 记录可取到的距离 程序清单: PROGRAM CHU7_6; VAR I,J,N,S:INTEGER; B:ARRAY[0..100]OF INTEGER; D:ARRAY[0..100,0..20]OF INTEGER; G :ARRAY[0..1000]OF 0..1; BEGIN READLN(N); FOR I:=1 TO N+1 DO BEGIN READLN(D[I,0]); FOR J:=1 TO D[I,0]DO READLN(D[I,J]); END; D[0,0]:=1; FOR I:=1 TO N+1 DO B[I]:=1; B[0]:=0; FOR I:=0 TO 1000 DO G[I]:=0; WHILE BEGIN S:=0; FOR I:=1 TO N+1 DO S:= ② G[S]:=1;J:=N+1; WHILE ③ DO J:=J-1; B[I]:=1; B[J]:=B[J]+1; FOR I:=J+1 TO N+1 DO END; S:=0; FOR I:=1 TO 1000 DO ④ ; 27 ① DO

WRITELN(S);READLN; END. 第七届全国青少年信息学(计算机)奥林匹克分区联赛试题(普及组参考答案) 一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题 1.5 分,多选无分,共 30 分) 题号 选择 题号 选择 二、问题解答(5+7 分,两题共 12 分) 1.答:在 a,b,c,d,e,f 六件物品中,按条件能选出的物品是:a,b,c,f 2.答:用这些点为顶点,能组成 751 个不同三角形 三、阅读程序,并写出程序的正确运行结果:(5+8+9+9 分,共 31 分) (1)程序的运行结果是:S=1055 (2)程序的运行结果是:1 3 6 10 120 21 5040 36 (3)程序的运行结果是:181 110 87 76 66 62 61 60 (4)程序的运行结果是:67 34 四、根据题意,将程序补充完整(每个点 3 分,共 30 分) 题一 ① 80 B(X)+1 ② 110 100 ③ 120 B(J)=0 ④ 130 J; ⑤ 160 K MOD 8=0 题二 ① 130 B(0)<>0 ② 160 S+D(I,B(I)) ③ 190 B(J)=D(J,0) ④ 240 S=S+G(I) 28 1 C 11 A 2 D 12 C 3 B 4 D 5 B 6 C 7 D 8 C 9 A 19 C 10 A 20 C

13 14 15 B A A

16 17 18 B C D

29

第八届全国青少年信息学奥林匹克联赛(NOIP2002)试题
(普及组 PASCAL 语言二小时完成) 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 一.选择一个正确答案代码(A/B/C/D,填入每题的括号内(每题 1.5 分,多选无分,共 30 分) 1)微型计算机的问世是由于( A) 中小规模集成电路 2)下列说法中正确的是( ) 的出现。 C) (超)大规模集成电路 D) 电子管电路 B) 晶体管电路 ) 。

A) 计算机体积越大,其功能就越强 B) CPU 的主频越高,其运行速度越快 C) 两个显示器屏幕大小相同,则它们的分辨率必定相同 D)点阵打印机的针数越多,则能打印的汉字字体越多 3)Windows98 中,通过查找命令查找文件时,若输入 F*.? , 则下列文件( A) F.BAS B) FABC.BAS C) F.C D) EF. ) 。 4)CPU 处理数据的基本单位是字,一个字的字长( A) 为 8 个二进制位 C) 为 32 个二进制位 B) 为 16 个二进制位 D) 与芯片的型号有关 ) 。 B) 该目录下还有子目录未展开 D) 该目录为空目录, ) 。 D) FORTRAN C) C++ ) 。 ) 可以被查到。

5)资源管理器的目录前图标中增加"+"号,这个符号的意思是( A) 该目录下的子目录已经展开 C) 该目录下没有子目录 A) Pascal B) GWBASIC

6)下列哪一种程序设计语言是解释执行的( 7)启动 WORD 的不正确方法是(

A) 单击 Office 工具栏上的 Word 图标 B) 单击"开始"→"程序"→Word C) 单击"开始"→"运行",并输入 Word 按回车 D) 双击桌面上的"Word 快捷图标" 8)多媒体计算机是指( A) 专供家庭使用的 C) 连接在网络上的高级 A) 同一个磁盘的不同目录下 C) 不同磁盘的不同目录下、 A) .jpg E A) # A) 0.1 B) .bmp B) @ ) B) 0.75 C) &
16

) 计算机。 B) 装有 CDROM 的 D) 具有处理文字、图形、声音、影像等信息的 ) 。 B) 不同磁盘的同一个目录下 D) 同一个磁盘的同一个目录下 ) 。 D).tiff ) 。

9)在树型目录结构中,不允许两个文件名相同主要是指(

10)用画笔(Paintbrush)绘制图形并存储在文件中,该图形文件的文件名缺省的后缀为( C) .gif D) $ D) 0.25 t11)E-ml 地址中用户名和邮件所在服务器名之间的分隔符号是( 12)(0.5)10=( . C) 0.8 ) 位二进制数码表示的。

13)IP v4 地址是由(

30

A) 16

B) 32

c) 24 B) (2049)10

D) 8 ) 。 D) (1AF7)16 C) (3746)8 )

14)算式(2047)10 一(3FF)16+(2000)8 的结果是( A) (2048)10 15)下列叙述中,错误的是(

A) Excel 中编辑的表格可以在 Word 中使用 B) 用 Word 编辑的文本可以存成纯文本文件 C) 用记事本(Notepa D) 编辑文本时可以插入图片 ) D) 用画笔(Paintbrush)绘图时可以输入文字 16)一个向量第一个元素的存储地址是 100,每个元素的长度是 2,则第 5 个元素的地址是( A) 110 B) 108 C) 100 D) 109 ) 。 C) 插入排序 ) D) 实现将模拟信号的数字信号 ) 。 ) 。 7 3 8 2 D) 选择排序 17)在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是( A) 希尔排序 B) 起泡排序 18)在计算机网络中,Modem 的功能是( A) 将模拟信号转换为数字信号 C) 实现模拟信号与数字信号的相互转换

B) 将数字信号转换为模拟信号

19)设有一个含有 13 个元素的 Hash 表(O~12),Hash 函数是:H(key)=key % 13,其中%是求余数运算。用线性探查法解决 冲突,则对于序列(2、8、31、20、19、18、53、27),18 应放在第几号格中( A) 5 B) 9 C) 4 1 4 A) 6 B) O C) 5 D) 0 2 6 D) 3 3 1 4 -1 5 6 7

20)要使 1?8 号格子的访问顺序为:82、63、73、1、4,则下图中的空格中应填人(

二.问题求解: 1. 如下图,有一个无穷大的的栈 S,在栈的右边排列着 1,2,3,4,5 共五个车厢。其中每个车厢可以向左行走,也可以进 入栈 S 让后面的车厢通过。现已知第一个到达出口的是 3 号车厢,请写出所有可能的到达出口的车厢排列总数(不 必给出每种排列)。 出口← ← S↓ 2.将 N 个红球和 M 个黄球排成一行。例如:N=2,M=3 可得到以下 6 种排法: 红红黄黄黄 红黄红黄黄 红黄黄红黄 黄红红黄黄 黄红黄红黄 黄黄黄红红 问题:当 N=4,M=3 时有多少种不同排法?(不用列出每种排法) 三.阅读程序: program exp1; var i,j,k,n,,L0,L1,LK:Integer; a :array [0..20] of integer; begin readln(n,k);
31

1

2

3

4

5

for i:=0 to n-1 do a[i]:=i+1; a[n]:=a[n-1];L0:=n-1; Lk:=n-1; for I:=1 to n-1 do begin L1:=L0-k; if (l1<0) then L1:=L1+n; If (l1=Lk) then begin A[L0]:=a[n]; Lk:=Lk-1; a[n]:=a[Lk]; l0:=lk End; Else Begin A[l0]:=a[l1];l0:=l1; End; End; A[L0]:=a[n]; For I:=0 to n-1 do write(a[I]:40; Writeln; End. 输入:10 输出: 2)program exp2; var n,jr,jw,jb:integer; ch1:char; ch:array[1..20]d char; begin readln(n); for i:=1 to n do read(ch[i]): jr:=1;jwz=n;jb:=n;: while (jr<=jw)do begin if(ch[jw]='R') then begin ch1:=Ch[jr];Ch[jr]:=ch[jw];ch[jw]:=ch1:jr:=jr+13 end else if ch[jw]='W' then jw:=jw-1 else begin ch1:=ch[jw];ch[jw]:=ch[jb];ch[jb]:=ch1;jw:=jw-1;jb:=jb-1; end end; for i:=1 to n do write(ch[i]);
32

4

writeln; end. 输入:10 RBRBWWRBBR 输出: 3)Pmgram exp3; Var I,j,p,n,q,s:integer; a :array[1..20]of integer; begin readln(p,n,q);j :=21; while (n>0)do begin j:=j-1;a[j]:=n mod 10;n:=n div 10; end; s:=0; for i:=j t0 20 do s:=s*p+a[i]; writeln(s);j :=21; while (s>O)do begin j:=j-1;a[j]:=s mod q;s:=s div q;end; for i:=j to 20 do write(a[i]);readln; end. 输入:7 3051 8 输出: 四.完善程序: 1.问题描述:将 n 个整数分成 k 组(k≤n,要求每组不能为空),显然这 k 个部分均可得到一个各自的和 s1,s2,??sk,定 义整数 P 为: P=(S1-S2) +(S1 一 S3) +??+(S1-Sk) +(s2-s3) +??+(Sk-1-Sk) 程序说明: 数组:a[1],a[2],...A[N]存放原数 s[1],s[2],...,s[K]存放每个部分的和 b[1],b[2],...,b[N]穷举用临时空间 d[1],d[2],...,d[N]存放最佳方案 程序: program exp4; Var i,j,n,k : integer; a :array [1..100] of integer; b,d:array [0..100] of integer; s :array[1..30] of integer;
33
2 2 2 2 2

问题求解:求出一种分法,使 P 为最小(若有多种方案仅记一种〉

begin readln(n,k); for I:=1 to n do read(a[I]); for I:=0 to n do b[I]:=1; cmin:=1000000; while (b[0]=1) do begin for I:=1 to k do for I:=1 to n do ② sum:=0; for I:=1 to k-1 do for j:= if ④ begin cmin:=sum; for I:=1 to n do d[I]:=b[I]; end; j:=n; while ⑤ do j:=j-1; ⑥ b[j]:=b[j]+1; for I:=j+1 to n do end; writeln(cmin); for I:=1 to n do write(d[I]:40); writeln; end. 2. 问题描述:工厂在每天的生产中,需要一定数量的零件,同时也可以知道每天生产一个零件的生产单价。在 N 天的生 产中,当天生产的零件可以满足当天的需要,若当天用不完,可以放到下一天去使用,但要收取每个零件的保管费,不同 的天收取的费用也不相同。 问题求解:求得一个 N 天的生产计划(即 N 天中每天应生产零件个数),使总的费用最少。 输入:N(天数 N<=29) 每天的需求量(N 个整数) 每天生产零件的单价(N 个整数) 每天保管零件的单价(N 个整数) 输出:每天的生产零件个数(N 个整数) 例如:当 N=3 时,其需要量与费用如下: 第一天 需要量 生产单价 25 20 第二天 15 30 第三天 30 32
34



③ then

sum:=sum+(s[I]-s[j])*(s[I]-s[j]);

保管单价

5

l0

0

生产计划的安排可以有许多方案,如下面的三种: 第一天 25 40 70 程序说明: b[n]:存放每天的需求量 c[n]:每天生产零件的单价 d[n]:每天保管零件的单价 e[n]:生产计划 程序: Program exp5; Var i,j,n,yu,j0,j1,s:integer; b,c,d,e: array[0..30]of integer; begin readln(n); for i:=1 to n do readln(b[[i],c[I],d[i]]; fori:=1 to n do e[i]:=0; ① begin yu:=c[j0]; j1:=jO; s:=b[j0]; while begin ③ end; ④ end; for i:=1 to n do readln; end. ⑤ jO:=j1+1; j1:=j1+1;s:=s+b[j1]; ② do :=10000;c[n+2]:=0;b[n+1]:=0;jO:=1; while (jO<=n)do 第二天 15 0 0 第三天 30 30 0 总的费用 25*2O+15*30+30*32=1910 40*20+15*5+30*32=1835 70*20+45*5+30*10=1925

35

36

第九届分区联赛普及组初赛试题 ●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●

一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题 1.5 分,共 30 分) 1.下列计算机设备中,既是输入设备,又是输出设备的是( )。 A)键盘 B)触摸屏 C)扫描仪 D)投影仪 E)数字化仪 2.下列分辨率的显示器所显示出的图像,最清晰的是( )。 A)800*600 B)1024*768 C)640*480 D)1280*1024 E)800*1000 3.下列说法中,正确的是( )。 A)在内存中,可执行程序用二进制码表示,源程序用八进制表示。 B)程序和数据在内存中都是用二进制码表示的。 C)内存中数据的存取是以二进制位为单位的。 D)中央处理器 CPU 执行的每条指令的长度都不同。 E)一般来说,在计算机内部,中文信息用十六进制表示,英文信息用八进制表示。 4.下列说法中,错误的是( )。 A)程序是指令的序列,它有三种结构:顺序、分支和循环。 B)地址总线决定了中央处理器 CPU 所能访问的最大内存空间的大小。 C)中央处理器 CPU 内部有寄存器组,用来存储数据。 D)不同厂家生产的 CPU 所能处理的指令集不一定相同。 E)数据传输过程中不可能会出错。 5.CPU 访问内存的速度比访问下列哪个存储设备要慢( )。 A)寄存器 B)硬盘 C)软盘 D)磁带 E)光盘 6.下列电子邮件地址,正确的是( )。 A)wang@hotmail.com B)cai@jcc.pc.tool@rf.edu.jp C)162.105.111.22 D)ccf.edu.cn E)http://www.sina.com 7.数字图像文件可以用下列哪个软件来编辑( )。 A)画笔(Paintbrush) B)记事簿(Notepad) C)Recorder D)WinRAR E)MidiSoft 8.下列哪个软件不是操作系统软件的名字( )。 A)Windows XP B)DOS C)Linux D)OS/2 E)Arch/Info 9.下列哪个不是个人计算机的硬件组成部分( )。
37

A)主板 B)操作系统 C)电源 D)硬盘 E)软驱 10.图灵(Alan Turing)是( )。 A)美国人 B)英国人 C)德国人 D)匈牙利人 E)法国人 11.第一个给计算机写程序的人是( )。 A)Alan Mathison Turing B)Ada Lovelace C)John von Neumann D)John McCarthy E)Edsger Wybe Dijkstra 12.十进制数 2003 等值于二进制数( )。 A)11111010011 B)10000011 C)110000111 D)010000011l E)1111010011 13.运算式(2008)10-(3723)8 的结果是( )。 A) (-1715)10 B) (5)10 C) (-5)16 D) (111)2 E) (3263)8 14.下列关于程序语言的叙述,不正确的是( )。 A)编写机器代码不比编写汇编代码容易。 B)高级语言需要编译成目标代码或通过解释器解释后才能被 CPU 执行。 C)同样一段高级语言程序通过不同的编译器可能产生不同的可执行程序。 D)汇编代码可被 CPU 直接运行。 E)不同的高级语言语法略有不同。 15.假设 A=true,B=false,C=true,D=true,逻辑运算表达式 A∧B∨C∧D 的值是( )。 A)true B)false C)0 D)1 E)NULL 16.一个高度为 h 的二叉树最小元素数目是( )。 A)2h+l B)h C)2h-1 D)2h E)2 -l 17.已知队列(13,2,11,34,41,77,5,7,18,26,15),第一个进入队列的元素是 13,则第五个出队列的元 素是( )。 A)5 B)41 C)77 D)13 E)18 18.下列关于文件的叙述,不正确的是( )。 A)一个可执行程序其实也是一个文件。 B)文件可大可小,大的文件一张软盘装不下。 C)一个文件夹下面可以有两个同名的文件,只要它们的大小不同就行了。 D)文件的创建日期和最新修改日期可以在资源管理器中看到。 E)某些文件的内容可以用记事本(Notepad)看到。
38
h

19.活动硬盘的容量比固定硬盘的容量( )。 A)大 B)小 C)相等 D)不一定大 E)大致相等 20.IP 地址是一个( )位二进制码。 A)8 B)16 C)32 D)64 E)12 二.问题求解(每题 5 分,共 10 分) 1.现在市场上有一款汽车 A 很热销,售价是 2 万美元。汽车 A 每加仑汽油可以行驶 20 英里。普通汽车每年大约 行驶 12000 英里。油价是每加仑 1 美元。不久我公司就要推出新款节油汽车 B,汽车 B 每加仑汽油可以行驶 30 英里。 现在我们要为 B 制定价格(它的价格略高于 A): 我们预计如果用户能够在两年内通过节省油钱把 B 高出 A 的价钱弥补回 来,则他们就会购买 B,否则就不会购买 B。那么 B 的最高价格应为 万美元。 2.无向图 G 有 16 条边,有 3 个 4 度顶点、4 个 3 度顶点,其余顶点的度均小于 3,则 G 至少有 三.阅读程序(每题 8 分,共 32 分) 1.program Programl; var a,x,y,okl,ok2:integer; begin a :=100: x:=l0; y:=20; okl:=5: ok2:=0; if ((x>y) or ((y<>20) and (okl=0)) and (ok2<>0)) then a:=1 else if ((okl<>0) and (ok2=、0)) then a:=-1 else a:=0; writeln(a); end. 输出: 2.program Program2; var a,t:string; i,j:integer; begin a:=`morning`; j:= l; for i:=2 to 7 do if (a[j]<a[i])then j:= i;
39

个顶点。

j:= j-1; for i:=1 to j do write (a[i]); end. 输出: 3.program Program3; Var a,b,c,d,sum:longint; begin read (a,b,c,d); a:=a mod 23: b:=b mod 28; c:=c mod 33; sum:=a*5544+b* 14421+c*1288-d; sum:=sum+21252; sum:=sum mod 21252; if (sum=0)then sum:=21252; writeln(sum); end. 输入:283 102 23 320 输出: 4.program program4; var a: array[0..5] of integer; sum,n,max,i,j,k:integer; cover:array[0..22000]of boolean; begin read (a[5],a[4],a[3],a[2],a[1],a[0]); if ((a[5]=0) and (a[3]=0) and (a[1]=0)) then begin a[5]:=a[4];a[4]:=a[2]; a[3]:=a[0]; a[2]:=0 a[0]:=0; end: for i:=0 to 5 do if (a[i]>10) then a[i]:=10+(a[i] mod 2); sum:=0: for i:=0 to 5 do sum:=sum+a[i]*(6-i); if ((sum mod 2) <>0) then begin writeln(`Can``t be divided.`); Exit; End; sum:=sum div 2; max:=0; cover[0]:=True; for i:=1 to sum*2 do cover[i]:=False; for i:=0 to 5 do begin j:=0;
40

while (j<a[i])do begin for k:=max downto 0 do begin if (cover[k]) then cover[k+6-i]:=True;end; max:=max+6-i: j:=j+1; end; end; if (cover[sum]) then writeln (`Can be divided.`) else writeln(`can``t be divided.`); end. 输入:4 7 9 20 56 48 输入:1000 7 101 20 55 1 输入:2000 5 l 1 0 0 输出: 输出: 输出: 四、完善程序(第 l 空 2 分,其余每空 3 分共 28 分) 1.一元二次方程 题目描述: 方程 ax^2+bx+c=0,要求给出它的实数解. 输 入: 三个实数:a,b,c,是方程的三个系数(a≠0). 输 出: 如果无实数解,则输出"No solution"; 如果有两个相等的实数解,则输出其中一个,四舍五入到小数点后面 3 位; 如果有两个不等的实数解,则解与解之间用逗号隔开,同样要四舍五入到小数点后 3 位。 输入样例: l 2 1 输出样例: -1.000 程 序: program Program41; var a,b,c,m:real; begin read (a,b,c); m:=b*b -4*a*c; if ( ① )then begin
41

write ( ② :0:3); write( ` , ` ); write ((-1*b-sqrt(m))/(2*a):0: ③ ); end else if ( ④ )then write( ⑤ ) else begin write (`No solution`); end end. 2.翻硬币 题目描述: 一摞硬币共有 m 枚,每一枚都是正面朝上。取下最上面的一枚硬币,将它翻面后放回原处。然后取下最上面的 2 枚硬币,将他们一起翻面后再放回原处。再取 3 枚,取 4 枚??直至 m 枚。然后再从这摞硬币最上面的一枚开始,重 复刚才的做法。这样一直做下去,直到这摞硬币中的每一枚又都是正面朝上为止。例如,m 为 1 时,翻两次即可。m 为 2 时,翻 3 次即可;m 为 3 时,翻 9 次即可;m 为 4 时,翻 11 次即可;m 为 5 时,翻 24 次即可;?;m 为 30 时,翻 899 次即可;? 输 入: 仅有的一个数字是这摞硬币的枚数 m,0<m<1000。 输 出: 为了使这摞硬币中的每一枚又都是正面朝上所必需翻的次数。 输入样例: 30 输出样例: 899 程 序: program Programl; var m:integer; function solve (m:integer):integer; vat i,t,d:integer; flag:boolean; begin if (m=1)then so1ve:= ① else begin d:=2*m+1; t:= 2;
42

i:= 1; flag:=False; repeat if (t=1)then begin solve:= ② flag:=True; end else if ( ③ )then begin solve:=i*m-1; flag:=True; end else t:= ④ ; i:=i+1; until flag; end end; begin read (m); if ((m>0) and (m<1000)) then writeln ( ⑤ ); end. 第九届分区普及组初赛参考答案

一、 选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题 1.5 分,多选无分,共 30 分)
题号 选择 题号 选择 1 B 11 B 2 D 12 A 3 B 13 B 4 E 14 D 5 A 15 A 6 A 16 B 7 A 17 B 8 E 18 C 9 B 19 D 10 B 20 C

二.问题解答(每题 5 分,共 10 分) 1.答: 2.04 2.答: 11 三.阅读程序,并写出程序的正确运行结果: (每题 8 分,共 32 分) (1)程序的运行结果是:-1 (2)程序的运行结果是;mo (3)程序的运行结果是:8910 (4)程序的运行结果是:Can't be divided

Can be divided

Can't be divided
43

四.根据题意,将程序补充完整(第 1 空 2 分,其余每空 3 分 共 28 分) PASCAL 语言 =================

题一 ① m>0 ② (-l*b+sqrt(m))/(2*a); ③ 3 ④ ABS(M)<0.0001 ⑤ -1*b/(2*a):0:3 题二 ① 2 ② i*m ③ t=2*m ④ (t*2)mod d ⑤ solve(m)

44

第十届全国青少年信息学奥林匹克联赛初赛试题 (普及组 Pascal 语言 二小时完成)
一、选择一个正确答案代码(A/B/C/D/E)填入每题的挂号内 1.美籍匈牙利数学家 冯·诺依曼 对计算机科学发展所做出的贡献是: ) ( A、提出理想计算机数学模型,成为计算机科学理论基础 B、是世界上第一个编写计算机程序的人 C、提出存储程序工作原理,并设计出第一台具有存储程序功能的计算机 EDVAC D、采用集成电路作为计算机的主要功能部件 E、指出计算机性能将以每两年翻一番的速度向前发展 2.下列哪个不是 CPU(中央处理单元) ) ( A、Intel Itanium B、DDR SDRAM C、AMD Athlon64 D、AMD Opteron E、IBM Power 5 3、下列网络中常用的名字缩写对应的中文解释错误的是( ) A、WWW(World Wide Web):万维网 B、URL(Uinform Resource Locator) :统一资源定位器 C、HTTP(Hypertext Transfer Protocol) :超文本传输协议 D、FTP (File Transfer Protocol):快速传输协议 E、TCP (Transfer Control Protocol) :传输控制协议 4、下面哪个部件对于个人桌面电脑的正常运行不是必需的( ) A、cpu B、显卡(图形卡) C、光驱 D、主板 E、内存 5、下列哪个软件属于操作系统软件( ) A、Microsoft Word B、金山词霸 C、Foxmail D、WinRAR E、Red Hat Linux 6、下列哪个不是计算机存储设备( ) 、 A、文件管理器 B、内存 C、高速缓存 D、硬盘 E、U 盘 7、下列说法中错误的是( ) A、CPU 的基本功能就是执行指令 B、CPU 访问内存的速度快于访问高速缓存的速度 C、CPU 的主频是指 CPU 在 1 秒内完成的指令周期数 D、在一台计算机内部,一个内存地址编码对应唯一的一个内存单元 E、数据中线的宽度决定了一次传递数据量的大小 8、彩色显示器所显示的五彩斑斓的色彩,是由红色,蓝色和( )色混合而成的
45

A、紫色 B、白色 C、黑色 D、绿色 E、橙色 9、用静电吸附磨粉后转移到纸张上,是那种输出设备的工作方式( ) A、针式打印机 B、喷墨打印机 C、激光打印机 D、笔式绘图仪 E、喷墨绘图仪 10、一台计算机如果要利用电话线上网,就必须配置能够对数字信号和模拟信号进行互相转换的设备,这种设备是( ) A、调制解调器 B、路由器 C、网卡 D、网关 E、网桥 11、下列哪个不是数据库软件的名称( ) A、MYSQL B、SQL Sever C、Oracle D、金山影霸 E、Foxpro 12、下列哪个程序设计语言不支持面向对象的程序设计方法( ) A、C++ B、Object Pascal C、C D、Smalltalk E、Java 13、由 3 个 a,1 个 b 和 2 个 c 构成的所有字符串中,包含子串“abc”的共有( )个 A、20 B、8 C、16 D、12 E、24 14、某车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时该车站站台为空,从这一时刻开始出入 记录为: “进出进进出进进进出出进出” 。假设车辆入站的顺序为 1,2,3??,则车辆出站的顺序为( ) A、1,2,3,4,5 B、1,2,4,5,7 C、1,3,5,4,6 D、1,3,5,6,7 E、1,3,6,5,7 15、二叉树 T,已知其前序遍历序列为 1 2 4 3 5 7 6,中序遍历序列为 4 2 1 5 7 3 6,其后序遍历序列为 A、4 2 5 7 6 3 1 B、4 2 7 5 6 3 1 C、4 2 7 5 3 6 1 D、4 7 2 3 5 6 1 E、4 5 2 6 3 7 1 16、满二叉树的叶节点为 N,则它的节点总数为( ) A、N B、2N C、2N-1 D、2N+1 E、2^N-1 17、十进制 2004 等于八进制数( ) A、3077 B、3724
46

C、2766 D、4002 E、3755 18、 (2004)10 +(32)16 的结果是( ) A、 (2036)10 B、 (2054)16 C、 (4006)10 D、 (100000000110)2 E、 (2036)16 19、在下图,从端点( )出发存在一条路径可以遍历图中的每条边一次,而且仅遍历一次 A B C

E

D

20、某大学计算机专业的必修课及期先修课程如下表所示: 课程 代号 课程 名称 先修 课程 C0 高等 数学 C1 程序 设计 语言 C2 离散 数学 C0,C1 C3 数据 结构 C1,C2 C4 编译 技术 C3 C5 操作 系统 C3,C7 C6 普通 物理 C0 C7 计算 机原 理 C6

请判断下列课程安排哪个是不合理的( ) A、C0,C6,C7,C1,C2,C3,C4,C5 B、C0,C1,C2,C3,C4,C6,C7,C5 C、C0,C1,C6,C7,C2,C3,C4,C5 D、C0,C1,C6,C7,C5,C2,C3,C4 E、C0,C1,C2,C3,C6,C7,C5,C4 二、问题求解(5 分一题,共 10 分) 1、一个家具公司生产桌子和椅子。现有 113 个单位的木材。每张桌子要使用 20 个单位的木材,售价是 30 元;每张椅 子要用 16 个单位的木材,售价是 20 元。使用已有的木材生产桌椅(不一定要用光木材)做多可以买_____元钱。 2、75 名儿童去游乐场玩。他们可以骑旋转木马,坐滑行轨道,乘宇宙飞船。已知其中 20 人这三种东西都玩过,55 人 至少玩过其中两种。若每玩一样的费用为 5 元,游乐场总共收入 700,可知有_____名儿童没有玩过其中任何一种。 .. 三、阅读程序(8’一题,共 32’) 1、------------------------------------------program program1; Var a,b,c,d,e:integer; begin
47

a:=79 ; b:=34; c:=57;d:=0 ; e:=-1; if (a<c) or (b>c) then d:=d+e else if (d+10<e) then d:=e+10 else d:=e-a; writeln(d); end. 输出:_____________________。 2、------------------------------------------program program2; var i,j:integer; str1,str2:string; begin str1:='pig-is-stupid'; str2:='clever'; str1[1]:='d'; str1[2]:='o'; i:=8; for j:=1 to 6 do begin str1[i]:=str2[j];inc(i); end; writeln(str1); end. 输出:_____________________。 3、------------------------------------------program program3; var u:array[0..3] of integer; a,b,c,x,y,z:integer; begin read(u[0],u[1],u[2],u[3]); a:=u[0]+u[1]+u[2]+u[3]-5; b:=u[0]*(u[1]-u[2] div u[3]+8); c:=u[0]*u[1] div u[2] * u[3]; x:=(a+b+2)*3-u[(c+3) mod 4]; y:=(c*100-13) div a div (u[b mod 3]*5); if ((x+y) mod 2=0) then z:=(a+b+c+x+y) div 2; z:=(a+b+c-x-y)*2; writeln(x+y-z); read(a); end. 输出:_____________________。 4、------------------------------------------program program4 ; var c:array[1..2] of string[200]; s:array[1..10] of integer; m,n,i:integer ; procedure numara; var cod:boolean; i,j,nr:integer;
48

begin for j:=1 to n do begin nr:=0;cod:=true; for i:=1 to m do if c[i,j]='1' then begin if not cod then begin cod:=true;inc(s[nr]);nr:=0; end end else begin if cod then begin nr:=1;cod:=false ; end else inc(nr); end; if not cod then inc(s[nr]); end; end; begin readln(m,n); for i:=1 to m do readln(c[i]); numara; for i:=1 to m do if s[i] <>0 then write(i,' ',s[i],' '); read(i); end. 输出:_____________________。 四、完善程序(共 28 分) 1、三角形内切圆的面积 题目描述:给出三角形三边的边长,求此三角形内切圆的面积。

输入:三个正实数 a、b、c(满足三角形三边关系) ,表示三角形三边边长。 输出:三角形内切圆的面积,结果四舍五入到小数点后 2 位 输入样例: 3 4 5 输出样例: 3.14 程序:①②③④⑤ PROGRAM PROGRAM1; VAR A,B,C,R,S,T:REAL; BEGIN READ(A,B,C); S :=( ① )/2; T:= ② (S*(S-A)*(S-B)*(S-C));
49

R:=T/S; WRITELN(3.1415927 * R * ③ END.

:0: ④ ;

2..Joseph 题目描述: 原始的 Joseph 问题的描述如下:有 n 个人围坐在一个圆桌周围,把这 n 个人依次编号为 1,??,n。从编号是 1 的人 开始报数,数到 m 个人出列,然后从出列的下一个人重新开始报数,数到第 m 个人又出列,??,如此反复直到所有 的人全部出列为止。比如当 n=6,m=5 的时候,出列的顺序依次是 5,4,6,2,3,1。 现在的问题是:假设有 k 个好人和 k 个坏人。好人的编号是 1 到 k,坏人的编号是 k+1 到 2k。我们希望求出 m 的最小 值,使得最先出列的 k 个人都是坏人。 输入: 仅有的一个数字是 k (0<K<14)。 输出: 使得最先出列的 k 个人都是坏人的 m 的最小值。 输入样例: 4 输出样例: 30 程序: program progaram1; var i,k,m,start:longint; find:boolean; function check(remain:integer) :boolean; var result:integer; begin result:=____(1)____ mod remain; if ____(2)____ then begin start:=result; check:=true; end else check:=false; end; begin find:=false; read(k); m:=k; while ____(3)____ do begin find:=true; start;=0; for i:=0 to k-1 do if (not check(____(4)____)) then begin find:=false; break; end; inc(m); end; writeln(____(5)____); end. 参考答案
一、1.C 2.B 3.D 4.C 5.E 6.A 7.B 8.D 9.C 10.A 50

11.D

12.C

13.D

14E 15.B

16.C

17.B

18.D

19.E

20.D

二、1.160 元 三、 1.-80 3 . 263 四、 1 . a+b+c 2 . start+m-1 SQRT

2.10人 2.Dog-is-clever 4 . 1 R 2 not(find) 2*k-I m-1 12588 2 12337 3 12339

result>=k

51

第十届全国青少年信息学奥林匹克联赛初赛试题
( 提高组 Pascal 语言 二小时完成 )

●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●● 一、 单项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确答案.) 。 设全集 I = {a, b, c, d, e, f, g}, 集合 A = {a, b, c}, = {b, d, e}, = {e, f, g}, B C 那么集合 ( A ? B) ? (~ C ? B) 为 ( A. {a, b, c, d} 2. B. {a, b, d, e} C. {b, d, e} D. {b, c, d, e} E. {d, f, g}

1.

) 。

由 3 个 a,5 个 b 和 2 个 c 构成的所有字符串中,包含子串“abc”的共有( )个。 A. 40320 B. 39600 C. 840 D. 780 E. 60 某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始 的出入记录为: “进,出,进,进,出,进,进,进,出,出,进,出” 。假设车辆入站的顺序为 1,2,3,??, 则车辆出站的顺序为( ) 。 A. 1, 2, 3, 4, 5 B. 1, 2, 4, 5, 7 C. 1, 3, 5, 4, 6 D. 1, 3, 5, 6, 7 E. 1, 3, 6, 5, 7 满二叉树的叶结点个数为 N,则它的结点总数为( ) 。 N A. N B. 2 * N C. 2 * N – 1 D. 2 * N + 1 E. 2 – 1 二叉树 T,已知其前序遍历序列为 1 2 4 3 5 7 6,中序遍历序列为 4 2 1 5 7 3 6,则其后序遍历序列为( ) 。 A. 4 2 5 7 6 3 1 B. 4 2 7 5 6 3 1 C. 4 2 7 5 3 6 1 D. 4 7 2 3 5 6 1 E. 4 5 2 6 3 7 1 十进制数 100.625 等值于二进制数( ) 。 A. 1001100.101 B. 1100100.101 C. 1100100.011

3.

4.

5.

6.

D. 1001100.11

E. 1001100.01

7.

下面哪个部件对于个人桌面电脑的正常运行不是必需的( ) 。 A. CPU B. 图形卡(显卡) C. 光驱 D. 主板 E. 内存 下列哪个网络上常用的名字缩写是错误的( ) 。 A. WWW(World Wide Web) B. URL(Uniform Resource Locator) C. HTTP(Hypertext Transfer Protocol) D. FTP(Fast Transfer Protocol) E. TCP(Transfer Control Protocol) 。 用静电吸附墨粉后转移到纸张上,是哪种输出设备的工作方式( ) 。 A. 针式打印机 B. 喷墨打印机 C. 激光打印机 D. 笔式绘图仪 E. 喷墨绘图仪

8.

9.

10. 一台计算机如果要利用电话线上网,就必须配置能够对数字信号和模拟信号进行相互转换的设备,这种设备是 ( ) 。 A. 调制解调器 B. 路由器 C. 网卡 D. 网关 E. 网桥 二、 不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。多选或少选均不得分) 。
52

11. 美籍匈牙利数学家冯·诺依曼对计算机科学发展所做出的贡献包括( ) 。 A. 提出理想计算机的数学模型,成为计算机科学的理论基础。 B. 提出存储程序工作原理,对现代电子计算机的发展产生深远影响。 C. 设计出第一台具有存储程序功能的计算机 EDVAC。 D. 采用集成电路作为计算机的主要功能部件。 E. 指出计算机性能将以每两年翻一番的速度向前发展。 12. 下列哪个(些)是 64 位处理器( ) 。 A. Intel Itanium B. Intel Pentium III C. AMD Athlon64 D. AMD Opteron E. IBM Power 5 13. (2004)10 + (32)16 的结果是( ) 。 A. (2036)16 B. (2054)10 C. (4006)8 D. (100000000110)2 14. 下列哪个(些)不是数据库软件的名称( ) 。 A. MySQL B. SQL Server C. Oracle D. Outlook 15. 下列哪个(些)不是计算机的存储设备( ) 。 A. 文件管理器 B. 内存 C. 显卡 D. 硬盘 16. 下列哪个(些)软件属于操作系统软件( ) 。 A. Microsoft Word B. Windows XP C. Foxmail

E. (2036)10

E. Foxpro

E. U 盘

D. 金山影霸

E. Red Hat Linux

17. 下列说法中正确的有( ) 。 A. CPU 的基本功能就是执行指令。 B. CPU 的主频是指 CPU 在 1 秒内完成的指令周期数,主频越快的 CPU 速度一定越快。 C. 内部构造不同的 CPU 运行相同的机器语言程序,一定会产生不同的结果。 D. 在一台计算机内部,一个内存地址编码对应唯一的一个内存单元。 E. 数据总线的宽度决定了一次传递数据量的大小,是影响计算机性能的因素之一。 18. 彩色显示器所显示的五彩斑斓的色彩,是由哪三色混合而成的( ) 。 A. 红 B. 白 C. 蓝 D. 绿 E. 橙 19. 下列哪个(些)程序设计语言支持面向对象程序设计方法( ) 。 A. C++ B. Object Pascal C. C D. Smalltalk E. Java 20. 某大学计算机专业的必修课及其先修课程如下表所示:

课程代号 课程名称 先修课程

C0 高等数学

C1 程序设计语言

C2 离散数学 C0, C1

C3 数据结构 C1, C2

C4 编译技术 C3

C5 操作系统 C3, C7

C6 普通物理 C0

C7 计算机原理 C6

请你判断下列课程安排方案哪个(些)是合理的( ) 。 A. C0, C1, C2, C3, C4, C5, C6, C7 B. C0, C1, C2, C3, C4, C6, C7, C5 C. C0, C1, C6, C7, C2, C3, C4, C5 D. C0, C1, C6, C7, C5, C2, C3, C4 E. C0, C1, C2, C3, C6, C7, C5, C4
53

三.问题求解(共 2 题,每题 5 分,共计 10 分) 1. 75 名儿童到游乐场去玩。他们可以骑旋转木马,坐滑行铁道,乘宇宙飞船。已知其中 20 人这三种东西都玩过,55 人至少玩过其中的两种。若每样乘坐一次的费用是 5 元,游乐场总共收入 700,可知有 名儿童没有玩过其中任 何一种。 已知 a, b, c, d, e, f, g 七个人中,a 会讲英语;b 会讲英语和汉语;c 会讲英语、意大利语和俄语;d 会讲汉语和日语; e 会讲意大利语和德语;f 会讲俄语、日语和法语;g 会讲德语和法语。能否将他们的座位安排在圆桌旁,使得每 个人都能与他身边的人交谈?如果可以,请以“a b”开头写出你的安排方案: 。

2.

四.阅读程序(共 4 题,每题 8 分,共计 32 分) 1.program progam1; var u: array [0..3] of integer; a, b, c, x, y, z: integer; begin read(u[0], u[1], u[2], u[3]); a := u[0] + u[1] + u[2] + u[3] - 5; b := u[0] * (u[1] - u[2] div u[3] + 8); c := u[0] * u[1] div u[2] * u[3]; x := (a + b + 2) * 3 - u[(c + 3) mod 4]; y := (c * 100 - 13) div a div (u[b mod 3] * 5); if((x+y) mod 2 = 0) then z := (a + b + c + x + y) div 2; z := (a + b + c – x - y) * 2; writeln(x + y - z); end. 输入:2 5 7 4 输出: 。

2.program program2; var i, number, ndata, sum: integer; data: array[1..100] of integer; procedure solve(s, sign, n: integer); var i: integer; begin for i := s to ndata do begin inc(sum, sign * (number div (n * data[i]))); solve(i + 1, -sign, n * data[i]); end; end; begin read(number ,ndata); sum := 0; for i := 1 to ndata do read(data[i]); solve(1, 1, 1); writeln(sum);
54

end. 输入:1000 3 5 13 11 输出: 。 3.program program3; var c: array[1..3] of string[200]; s: array[1..10] of integer; m, n, i: integer; procedure numara; var cod: boolean; i, j, nr: integer; begin for j := 1 to n do begin nr := 0; cod := true; for i := 1 to m do if c[i, j] = '1' then begin if not cod then begin cod := true; inc(s[nr]); nr := 0; end end else begin if cod then begin nr := 1; cod := false; end else inc(nr); end; if not cod then inc(s[nr]); end; end; begin readln(m, n); for i := 1 to m do readln(c[i]); numara; for i := 1 to m do if s[i] <> 0 then write(i, ' ', s[i], ' '); end. 输入: 3 10 1110000111 1100001111 1000000011 输出: 。

4.program program4; const u: array[0..2] of integer = (1, -3, 2); v: array[0..1] of integer = (-2, 3); var i, n, sum: integer;
55

function g(n: integer): integer; var i, sum: integer; begin sum := 0; for i := 1 to n do inc(sum, u[i mod 3] * i); g := sum; end; begin sum := 0; read(n); for i := 1 to n do inc(sum, v[i mod 2] * g(i)); writeln(sum); end. 输入:103 输出: 。

五.完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) 1.Joseph 题目描述: 原始的Joseph问题的描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1,…,n。从编号是1的人开 始报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m个人又出列,…,如此反复直到所有的人 全部出列为止。比如当n=6,m=5的时候,出列的顺序依次是5,4,6,2,3,1。 现在的问题是:假设有k个好人和k个坏人。好人的编号的1到k,坏人的编号是k+1到2k。我们希望求出m的最小值, 使得最先出列的k个人都是坏人。 输入: 仅有的一个数字是k(0 < k <14) 。 输出: 使得最先出列的k个人都是坏人的m的最小值。 输入样例: 4 输出样例: 30 程序: program program1; var i, k, m, start: longint; find: boolean; function check(remain: integer): boolean; var result: integer; begin result:=( ① ) mod remain; if( ② )then begin start := result; check := true; end else check := false; end; begin find := false;
56

read(k); m := k; while ( ③ ) do begin find := true; start := 0; for i := 0 to k-1 do if( not check( ④ )) then begin find := false; break; end; inc(m); end; writeln( end. ⑤ );

2.逻辑游戏 题目描述: 一个同学给了我一个逻辑游戏。他给了我图 1,在这个图上,每一段边界都已经进行了编号。我的任务是在图中画 一条连续的曲线,使得这条曲线穿过每一个边界一次且仅穿过一次,而且曲线的起点和终点都在这整个区域的外面。 这条曲线是容许自交的。 对于图 1,我的同学告诉我画出这样的一条曲线(图 2)是不可能的,但是对于有的图形(比如图 3) ,画出这样一 条曲线是可行的。对于给定的一个图,我想知道是否可以画出满足要求的曲线。

图1

图2

图3

图4

输入: 输入的图形用一个n×n的矩阵表示的。矩阵的每一个单元里有一个0到255之间(包括0和255)的整数。处于同一 个区域的单元里的数相同,相邻区域的数不同(但是不相邻的区域里的数可能相同) 。 输入的第一行是n(0<n<100) 。以下的n行每行包括n个整数,分别给出对应的单元里的整数(这n个整数之间用空 格分开) 。图4给出了输入样例对应的图形。 输出: 当可以画出满足题意的曲线的时候,输出“YES” ;否则,输出“NO” 。 输入样例: 3 112
57

122 112 输出样例: YES 程序: program program2; const d: array[0..7] of integer = (1, 0, -1, 0, 0, 1, var orig, n, i, j, ns: integer; a: array[0..101, 0..101] of integer; bun: boolean; procedure plimba(x, y: integer); var i, x1, y1: integer; begin a[x, y] := -a[x, y]; if (abs(a[x - 1, y]) <> or (abs(a[x, y - 1]) if (abs(a[x + 1, y]) <> or (abs(a[x, y - 1]) orig) and <> orig)) orig) and <> orig)) (( ② <> a[x - 1, y]) then inc(ns); ((a[x + 1, y - 1] <> a[x + 1,y]) then inc(ns); (( ③ <> a[x, y - 1]) then inc(ns); ((a[x - 1, y + 1] <> a[x,y + 1]) then inc(ns); ① );

if (abs(a[x, y - 1]) <> orig) and or (abs(a[x - 1, y]) <> orig)) if (abs(a[x, y + 1]) <> orig) and or (abs(a[x - 1, y]) <> orig)) for i := 0 to 3 do begin

x1 := x + d[2 * i];y1:=y+ ④ ; if (x1 >= 1) and (x1 <= n) and (y1 >= 1) and (y1 <= n) and ( ⑤ ) then plimba(x1, y1); end; end; begin bun := true; read(n); for i := 0 to n+1 do for j := 0 to n+1 do a[i, j] := 0; a[0, 0] := -1; a[n + 1, 0] := -1; a[0, n + 1] := -1; a[n + 1, n + 1] := -1; for i := 1 to n do for j := 1 to n do read(a[i, j]); for i := 1 to n do for j := 1 to n do if a[i, j] > -1 then begin ns := 0; ⑥ ; plimba(i, j); if ns mod 2 = 1 then bun := false; end; if bun then writeln('YES'); if not bun then writeln('NO'); end.
58

59

赛区



学校

姓名

========================== 密



线

=======================

第十届全国青少年信息学奥林匹克联赛初赛试题 提高组答卷纸
阅 总阅卷人 第 题号 得分 第 题号 得分 11 二 12 大 13 14 题 15 16 得 17 分 18 19 20 1 一 2 大 3 4 题 5 6 得 7 分 8 9 10 卷 记 录 总 得 分 第三大题得分 第四大题得分 1) 2) 3) 4)

第五大题得分 (1) (2)

============================ 以下由考生填写 ============================

答卷部分
一. 单项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确答案.) 。 题号 选择 二.不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。多选或少选均不得分) 。 题号 选择 三.问题求解(共 2 题,每题 5 分,共计 10 分) 1. 答: 2. 答: 四. 阅读程序(共 4 题,每题 8 分,共计 32 分) 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10

(1) 程序的运行结果是: (2) 程序的运行结果是:
60

赛区



学校

姓名

========================== 密



线

=======================

四. 阅读程序(共 4 题,每题 8 分,共计 32 分)

(3) 程序的运行结果是:

(4)程序的运行结果是:

五. 完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) Pascal 语言 ================= 1. (1) ________________________________ (2) ________________________________ (3) ________________________________ (4) ________________________________ (5) ________________________________ 2. (1) ________________________________ (2) ________________________________ (3) ________________________________ (4)________________________________ (5)________________________________ (6) ________________________________

61

第十届全国青少年信息学奥林匹克联赛初赛试题 提高组参考答案
一. 单项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确答案.) 。 题号 1 2 3 4 5 6 7 8 9 10 选择 A D E C B B C D C A

二.不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。多选或少选均不得分) 。 题号 11 12 13 14 15 16 17 18 19 选择 BC ACDE BCD D AC BE ADE ACD ABDE

20 BCE

三.问题求解(共 2 题,每题 5 分,共计 10 分) 1. 答: 10 2. 答: a b d f g e c 四. 阅读程序(共 4 题,每题 8 分,共计 32 分) (1)程序的运行结果是: 263 (2) 程序的运行结果是: 328 (3)程序的运行结果是: 1 4 2 1 3 3 (4)程序的运行结果是: -400 五. 完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) Pascal 语言 ================= 1. (1) (2) (3) (4) (5) 2. (1) (2) (3) 0,-1 a[x-1,y-1] a[x-1,y-1]
62

start+m-1 result>=k (或者 k<=result) not find (或者 find=false) 2*k-i m-1

(4) (5) (6)

d[2*i+1] a[x1,y1]=orig (或者 orig=a[x1,y1]) orig:=a[i,j]

63

第十一届全国青少年信息学奥林匹克联赛初赛试题 ( 普及组 pascal&C 语言二小时完成) ●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●

由 OIFans(www.OIFans.cn)整理
一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题 1.5 分, 共 30 分) 1. 在字符串“ababacbabcbdecced”中出现次数最多的字母出现了( )次。 A. 6 B. 5 C. 4 D. 3 E. 2 2. 设全集 I = {a, b, c, d, e, f, g, h},集合 A = {a, b, c, d, e, f},B = {c, d, e},C = {a, d},那 么集合 C B A ~ ? ? 为( )。 A. {c, e} B. {d, e} C. {e} D. {c, d, e} E. {d, f} 3. 和十进制数 23 的值相等的二进制数是( )。 A. 10110 B. 11011 C. 11011 D. 10111 E. 10011 4. 完全二叉树的结点个数为 11,则它的叶结点个数为( )。 A. 4 B.3 C.5 D. 2 E. 6 5. 平面上有五个点 A(5, 3), B(3, 5), C(2, 1), D(3, 3), E(5, 1)。以这五点作为完全图 G 的顶点, 每两点之间的直线距离是图 G 中对应边的权值。以下哪条边不是图 G 的最小生成树中 的边( )。 A. AD B. BD C. CD D. DE E. EA 6. Intel 的首颗 16 位处理器是( )。 A. 8088 B. 80386 C. 80486 D. 8086 E. Pentium 7. 处理器 A 每秒处理的指令数是处理器 B 的 2 倍。某一特定程序 P 分别编译为处理器 A 和处理器 B 的指令,编译结果处理器 A 的指令数是处理器 B 的 4 倍。已知程序 P 在处 理器 A 上执行需要 1 个小时,那么在输入相同的情况下,程序 P 在处理器 B 上执行需 要( )小时。 A. 4 B. 2 C. 1 D. 1 / 2 E. 1 / 4 8. 以下哪个不是计算机的输出设备( )。 A. 音箱 B. 显示器 C. 打印机 D. 扫描仪 E. 绘图仪 9. 下列活动中不属于信息学奥赛的系列活动的是( )。 A. NOIP B. NOI C. IOI D. 冬令营 E. 程序员等级考试 10. 以下断电之后仍能保存数据的是( )。 A. 硬盘 B. 寄存器 C. 显存 D. 内存 E. 高速缓存 11. 以下哪个软件不是即时通信软件( )。 A. 网易泡泡 B. MSN Messenger C. Google Talk D. 3DS Max E. QQ 12. 下列关于高级语言的说法错误的是( )。 A. Fortran 是历史上的第一个面向科学计算的高级语言 B. Pascal 和 C 都是编译执行的高级语言 C. C++是历史上的第一个支持面向对象的语言 D. 编译器将高级语言程序转变为目标代码 E. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上 13. 下列设备不具有计算功能的是( )。 A. 笔记本电脑 B. 掌上电脑 C. 智能手机 D. 电子计算器 E. 液晶显示器 14. 常见的邮件传输服务器使用( )协议接收邮件。 A. HTTP B. SMTP C. TCP D. FTP E. POP3 15. 下列浏览器中,由微软公司开发的浏览器是( )。 A. Internet Explore B. Netscape C. Opera D. Firefox E. Mozilla 64

16. 一位艺术史学家有 20000 幅真彩色图像,每幅图像约占 3M 空间。如果将这些图像以位 图形式保存在 CD 光盘上(一张 CD 光盘的容量按 600M 计算),大约需要( )张 CD 光盘。 A. 1 B. 10 C. 100 D. 1000 E. 10000 17. 设 A = true,B = false,C = false,D = true,以下逻辑运算表达式值为真的是( )。 A. (A B ∧ )∨(C D ∧ ) B. ((A B ∧ ) C ∨ ) D ∧ C. A∧((B C ∨ ) D ∧ ) D. (A∧(B C ∨ )) D ∨ E. (A B ∨ )∧(C D ∧ ) 18. (3725)8 + (B)16 的运算结果是( )。 A. (3736)8 B. (2016)10 C. (1111110000)2 D. (3006)10 E. (7B0)16 19. 二叉树 T 的宽度优先遍历序列为 A B C D E F G H I,已知 A 是 C 的父结点,D 是 G 的 父结点,F 是 I 的父结点,树中所有结点的最大深度为 3(根结点深度设为 0),可知 F 的父结点是( )。 A. 无法确定 B. B C. C D. D E. E 20. 设栈 S 的初始状态为空,元素 a, b, c, d, e, f, g 依次入栈,以下出栈序列不可能出现的是 ( )。 A. a, b, c, e, d, f, g B. b, c, a, f, e, g, d C. a, e, d, c, b, f, g D. d, c, f, e, b, a, g E. g, e, f, d, c, b, a

二.问题求解(请在空格处填上答案,每空 5 分,共 10 分) 1. 将数组{32, 74, 25, 53, 28, 43, 86, 47}中的元素按从小到大的顺序排列,每次可以交换任 意两个元素,最少需要交换次。 2. 有 3 个课外小组:物理组,化学组和生物组。今有张、王、李、赵、陈 5 名同学,已知 张、王为物理组成员,张、李、赵为化学组成员,李、赵、陈为生物组成员。如果要在 3 个小组中分别选出 3 位组长,一位同学最多只能担任一个小组的组长,共有种 选择方案。

三.阅读程序(共 4 题,每题 8 分,共计 32 分) ==================PASCAL 语言================== 1. var a, b : integer; begin read(a); b := (a * (a * a)) + 1; if b mod 3 = 0 then b := b div 3; if b mod 5 = 0 then b := b div 5; if b mod 7 = 0 then b := b div 7; if b mod 9 = 0 then b := b div 9; if b mod 11 = 0 then b := b div 11; if b mod 13 = 0 then b := b div 13; if b mod 15 = 0 then b := b div 15; writeln((100 * a - b) div 2); end. 输入:10 输出: 2. var str : string; i : integer; 65

begin str := 'Today-is-terrible!'; for i := 7 to 11 do if str = '-' then str[i - 1] := 'x'; for i := 13 downto 1 do if str = 't' then str[i + 1] := 'e'; writeln(str); end. 输出: 3. var a, b, c, p, q : integer; r : array[0..2] of integer; begin read(a, b, c); p := a div b div c; q := b - c + a + p; r[0] := a * p div q * q; r[1] := r[0] * (r[0] - 300); if (3 * q - p mod 3 <= r[0]) and (r[2] = r[2]) then r[1] := r[r[0] div p mod 2] else r[1] := q mod p; writeln(r[0] - r[1]); end. 输入:100 7 3 输出: 4. var str : string; len, i, j : integer; nchr : array [0..25] of integer; mmin : char; begin mmin := 'z'; readln(str); len := length(str); i := len; while i >= 2 do begin if str[i - 1] < str then break; dec(i); end; if i = 1 then begin writeln('No result!'); exit; end; for j := 1 to i - 2 do write(str[j]); fillchar(nchr, sizeof(nchr), 0); for j := i to len do begin if (str[j] > str[i - 1]) and (str[j] < mmin) then mmin := str[j]; inc(nchr[ord(str[j]) - ord('a')]); end; dec(nchr[ord(mmin) - ord('a')]); inc(nchr[ord(str[i - 1]) - ord('a')]); 66

write(mmin); for i := 0 to 25 do for j := 1 to nchr do write(chr(i + ord('a'))); writeln; end. 输入:zzyzcccbbbaaa 输出: ==================C 语言================== 1. #include <stdio.h> int main() { int a, b; scanf(“%d”, &a); b = (a * (a * a)) + 1; if (b%3 == 0) b = b / 3; if (b%5 == 0) b = b / 5; if (b%7 == 0) b = b / 7; if (b%9 == 0) b = b / 9; if (b%11 == 0) b = b / 11; if (b%13 == 0) b = b / 13; if (b%15 == 0) b = b / 15; printf(“%d \n”, (100 * a – b) / 2); return 0; } 输入:10 输出: 2. #include <stdio.h> int main() { char str[20] = “Today-is-terrible!”; int i; for (i = 6; i <= 10; i++) if (str == ‘-‘) str[i – 1] = ‘x‘; for (i = 12; i >= 0; i--) if (str == ‘t’) str[i + 1] = ‘e’; printf(“%s\n”, str); return 0; } 输出: 3. #include <stdio.h> int main() { int a, b, c, p, q, r[3]; scanf(“%d%d%d”, &a, &b, &c); p = a / b / c; q = b – c + a + p; r[0] = a * p / q * q; r[1] = r[0] * (r[0] – 300); if (3 * q – p % 3 <= r[0] && r[2] == r[2]) r[1] = r[r[0] / p % 2]; 67

else r[1] = q % p; printf(“%d\n”, r[0] – r[1]); return 0; } 输入:100 7 3 输出: 4. #include<stdio.h> #include<string.h> int main(){ char str[60]; int len, i, j, chr[26]; char mmin = 'z'; scanf("%s", str); len = strlen(str); for (i = len - 1; i >= 1; i--) if (str[i - 1] < str) break; if (i == 0) { printf("No result!\n"); return 0; } for (j = 0; j < i - 1; j++) putchar(str[j]); memset(chr, 0, sizeof(chr)); for (j = i; j < len; j++) { if (str[j] > str[i - 1] && str[j] < mmin) mmin = str[j]; chr[str[j] - 'a']++; } chr[mmin - 'a']--; chr[str[i - 1] - 'a']++; putchar(mmin); for(i = 0; i < 26; i++) for(j = 0; j < chr; j++) putchar(i + 'a'); putchar('\n'); return 0; } 输入:zzyzcccbbbaaa 输出:

四.完善程序(前 4 空,每空 2 分,后 5 空,每空 4 分,共 28 分) ==================PASCAL 语言================== 1.判断质数 题目描述: 给出一个正整数,判断这个数是否是质数。 输入: 一个正整数 n(1 ≤ n ≤ 10000)。 输出: 68

如果 n 是质数,输出”YES”;否则,输出”NO”。 输入样例: 10 输出样例: NO 程序: var ① : integer; begin read(n); if n = 2 then writeln( ② ) else if ( ③ ) or (n mod 2 = 0) then writeln('NO') else begin i := 3; while i * i <= n do begin if ④ then begin writeln('NO'); exit; end; i := i + 2; end; writeln('YES'); end; end. 2.木材加工 题目描述: 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有 剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段越长越好,你的任务 是计算能够得到的小段木头的最大长度。木头长度的单位是 cm。原木的长度都是正整数, 我们要求切割得到的小段木头的长度也是正整数。 输入: 第一行是两个正整数 N 和 K(1 ≤ N ≤ 10000,1 ≤ K ≤ 10000),N 是原木的数目, K 是需要得到的小段的数目。 接下来的 N 行,每行有一个 1 到 10000 之间的正整数,表示一根原木的长度。 输出: 输出能够切割得到的小段的最大长度。如果连 1cm 长的小段都切不出来,输出”0”。 输入样例: 3 7 232 124 456 输出样例: 114 程序: var n, k : integer; len : array [1..10000] of integer; i, left, right, mid : integer; function isok(t : integer) : boolean; var 69

num, i : integer; begin num := 0; for i := 1 to n do begin if num >= k then break; num := ① ; end; if ② then isok := true else isok := false; end; begin readln(n, k); right := 0; for i := 1 to n do begin readln(len); if right < len then right := len; end; inc(right); ③ ; while ④ < right do begin mid := (left + right) div 2; if ⑤ then right := mid else left := mid; end; writeln(left); end. ==================C 语言================== 1.判断质数 题目描述: 给出一个正整数,判断这个数是否是质数。 输入: 一个正整数 n(1 ≤ n ≤ 10000)。 输出: 如果 n 是质数,输出”YES”;否则,输出”NO”。 输入样例: 10 输出样例: NO 程序: #include <stdio.h> int main() { int ① ; scanf("%d", &n); if (n == 2) puts( ② ); else if ( ③ || n % 2 == 0) puts("NO"); else { i = 3; while (i * i <= n) { if ( ④ ) { 70

puts("NO"); return 0; } i = i + 2; } puts("YES"); } return 0; } 2.木材加工 题目描述: 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小 段的数目是给定的。当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段 木头的最大长度。 木头长度的单位是 cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度 也是正整数。 输入: 第一行是两个正整数 N 和 K(1 ≤ N ≤ 10000,1 ≤ K ≤ 10000),N 是原木的数目, K 是需要得到的小段的数目。 接下来的 N 行,每行有一个 1 到 10000 之间的正整数,表示一根原木的长度。 输出: 输出能够切割得到的小段的最大长度。如果连 1cm 长的小段都切不出来,输出”0”。 输入样例: 3 7 232 124 456 输出样例: 114 程序: #include <stdio.h> int n, k, len[10000]; int isok(int t) { int num = 0, i; for (i = 0; i < n; i++) { if (num >= k) break; num = ① ; } if ( ② ) return 1; else return 0; } int main() { int i, left, right, mid; scanf("%d%d", &n, &k); right = 0; for (i = 0; i < n; i++) { scanf("%d", &(len)); if (right < len) right = len; } right++; 71

③ ; while ( ④ < right) { mid = (left + right) / 2; if ( ⑤ ) right = mid; else left = mid; } printf ("%d\n", left); return 0;

72

第十一届全国青少年信息学奥林匹克联赛初赛试题普及组(P&C)参考答案
由 OIFans(www.OIFans.cn)整理

一. 选择一个正确答案代码(A/B/C/D/E),填入每题的括号内 (每题 1.5 分,多选无分, 共 30 分) 题号 1 2 3 4 5 6 7 8 9 10 选择 B A D E D D D D E A 题号 11 12 13 14 15 16 17 18 19 20 选择 D C E E A C D B C E 二.问题解答 (每题 5 分,共 10 分) 1. 答: 5 2. 答: 11 三. 阅读程序,并写出程序的正确运行结果:(每题 8 分,共 32 分)
(1) (2) (3) (4) 程序的运行结果是: 程序的运行结果是: 程序的运行结果是: 程序的运行结果是: 499 Today-ix-terrible! -7452 zzzaaabbbcccy

四.根据题意, 将程序补充完整 (前 4 空,每空 2 分,后 5 空,每空 4 分,共 28 分)
pascal 语言 =================

1.
① ② ③ ④
n, i

(或者 i, n)
'YES'

n = 1

(或者 n – 1 = 0)

n mod i = 0

2.
① ② ③ ④
num + len[i] div t num >= k left := 0 left + 1

73



not isok(mid) (或者 isok(mid) = false)

C 语言 =================

1.
① ② ③ ④
n, i (或者 i, n) 'YES' n == 1 (或者 n – 1 == 0) n % i == 0

(或者 !n % i)

2.
① ② ③ ④ ⑤
num + len[i] / t num >= k left = 0 left + 1 !isok(mid)

(或者 isok(mid) == 0)

74

第十二届全国青少年信息学奥林匹克联赛初赛试题 ( 普及组 Pascal 语言 二小时完成 ) ● ● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●● 一、 单项选择题 (共 20 题,每题 1.5 分,共计 30 分。每题有且仅有一个正确答案.)。 1. 在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是( )。 A. 沃尔夫奖 B. 诺贝尔奖 C. 菲尔兹奖 D. 图灵奖 2. 在下列各软件中,不属于 NOIP 竞赛(复赛)推荐使用的语言环境有( )。 A. gcc/g++ B. Turbo Pascal C. RHIDE D. free pascal 3. 以下断电之后仍能保存数据的有( )。 A. 寄存器 B. ROM C. RAM D. 高速缓存 4.Linux 是一种( )。 A. 绘图软件 B. 程序设计语言 C. 操作系统 D. 网络浏览器 5. CPU 是( )的简称。 A. 硬盘 B. 中央处理器 C. 高级程序语言 D. 核心寄存器 6. 在计算机中,防火墙的作用是( )。 A. 防止火灾蔓延 B.防止网络攻击 C. 防止计算机死机 D. 防止使用者误删除数据 7. 在下列关于计算机语言的说法中,不正确的是( )。 A. Pascal 和 C 都是编译执行的高级语言 B. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上 C. C++是历史上的第一个支持面向对象的计算机语言 D. 与汇编语言相比,高级语言程序更容易阅读 8. 在下列关于计算机算法的说法中,不正确的是( )。 A. 一个正确的算法至少要有一个输入 B. 算法的改进,在很大程度上推动了计算机科学与技术的进步 C. 判断一个算法的好坏的主要标准是算法的时间复杂性与空间复杂性 D. 目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效算法 9. 在下列各种排序算法中,不是以"比较"作为主要操作的算法是( )。 A. 选择排序 B. 冒泡排序 C. 插入排序 D. 基数排序 10.在编程时(使用任一种高级语言,不一定是 Pascal),如果需要从磁盘文件中输入一个很大的二维 数组(例如 1000*1000 的 double 型数组),按行读(即外层循环是关于行的)与按列读(即外层循环 是关于列的)相比,在输入效率上( )。 A. 没有区别 B. 按行读的方式要高一些
75

C. 按列读的方式要高一些 D. 取决于数组的存储方式。 11.在 Pascal 语言中,表达式 (21 xor 2)的值是( ) A. 441 B. 42 C.23 D.24 12.在 Pascal 语言中,判断 a 不等于 0 且 b 不等于 0 的正确的条件表达式是( ) A. not a=0 or not b=0 B. not((a=0)and(b=0)) C. not(a=0 and b=0) D. (a<>0)and (b<>0) 13.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从 这一时刻开始的出入记录为:"进,出,进,进,进,出,出,进,进,进,出,出"。假设车辆入站的 顺序为 1,2,3,??,则车辆出站的顺序为( )。 A. 1, 2, 3, 4, 5 B. 1, 2, 4, 5, 7 C. 1, 4, 3, 7, 6 D. 1, 4, 3, 7, 2 14.高度为 n 的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为 n-1 的满二叉树。 在这里,树高等于叶结点的最大深度,根结点的深度为 0,如果某个均衡的二叉树共有 2381 个结点,则 该树的树高为( )。 A. 10 B. 11 C. 12 D. 13 15. 与十进制数 1770 对应的八进制数是( )。 A. 3350 B. 3351 C. 3352 D. 3540 16.将 5 个数的序列排序,不论原先的顺序如何,最少都可以通过( )次比较,完成从小到大的排序。 A. 6 B. 7 C. 8 D. 9 17. 设 A=B=D=true,C=false,以下逻辑运算表达式值为真的有( )。 A. (A∧B)∨(C∧D) B. ((A∨B∨D)∧C) C. A∧(B∨C∨D) D. (A∧B∧C)∨ D 18. (2010)16 + (32)8 的结果是( )。 A. (8234)10 B. (202B)16 C. (20056)8 D. (100000000110)2 19. 设栈 S 的初始状态为空,元素 a, b, c, d, e 依次入栈,以下出栈序列不可能出现的有( )。 A. a, b, c, e, d B. b, c, a, e, d C. a, e, c, b, d D. d, c, e, b, a 20. 已知 6 个结点的二叉树的先根遍历是 1 2 3 4 5 6(数字为结点的编号,以下同),后根遍历是 3 2 5 6 4 1,则该二叉树的可能的中根遍历是( ) A. 3 2 1 4 6 5 B. 3 2 1 5 4 6 C. 2 1 3 5 4 6 D. 2 3 1 4 6 5 二.问题求解(共 2 题,每题 5 分,共计 10 分) 1.(寻找假币) 现有 80 枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使 用不带砝码的天平称重,最少需要称几次,就可以找出假币?你还要指出第 1 次的称重方法。请写出你
76

的结果:_________________________________________________。 2.(取石子游戏) 现有 5 堆石子,石子数依次为 3,5,7,19,50,甲乙两人轮流从任一堆中任取(每 次只能取自一堆,不能不取), 取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无论乙 怎样取,甲只要不失误,都能获胜)?如果有,甲第一步应该在哪一堆里取多少?请写出你的结果: _________________________________________________。 三.阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. Program ex301; var u:array[0..3] of integer; i,a,b,x,y:integer; begin y:=10; for i:=0 to 3 do read(u[i]); a:=(u[0]+u[1]+u[2]+u[3]) div 7; b:=u[0] div ((u[1]-u[2]) div u[3]); x:=(u[0]+a+2)-u[(u[3]+3) mod 4]; if (x>10) then y:=y+(b*100-u[3]) div (u[u[0] mod 3]*5) else y:=y+20+(b*100-u[3]) div (u[u[0] mod 3]*5); writeln (x,',',y); end. {*注:本例中,给定的输入数据可以避免分母为 0 或下标越界。 } 输入:9 3 9 4 输出:_______________ 2.Program ex302; const m:array[0..4] of integer=(2,3,5,7,13); var i,j:integer; t: longint; begin for i:=0 to 4 do begin t:=1;
77

for j:=1 to m[i]-1 do t:=t*2; t:=(t*2-1)*t; write (t,' '); end; writeln; end. 输出:____________________ 3.Program ex303; Const NN=7; Type Arr1=array[0..30] of char; var s:arr1; k,p:integer; Function fun(s:arr1; a:char;n:integer):integer; var j:integer; begin j:=n; while (a<s[j])and(j>0) do dec(j); fun:=j; end; begin for k:=1 to NN do s[k]:=chr(ord('A')+2*k+1); k:=fun(s,'M',NN); writeln(k); end. 输出:_____________ 4.program ex304; var x,x2:longint; procedure digit(n,m:longint);
78

var n2:integer; begin if(m>0) then begin n2:=n mod 10; write(n2:2); if(m>1) then digit(n div 10,m div 10); n2:=n mod 10; write(n2:2); end; end; begin writeln('Input a number:'); readln(x); x2:=1; while(x2<x) do x2:=x2*10; x2:=x2 div 10; digit(x,x2); writeln; 5 end. 输入:9734526 输出:______________________________ 四.完善程序 (前 4 空,每空 2.5 分,后 6 空,每空 3 分,共 28 分) 1.(全排列)下面程序的功能是利用递归方法生成从 1 到 n(n<10)的 n 个数的全部可能的排列(不一定 按升序输出)。例如,输入 3,则应该输出(每行输出 5 个排列): 123 132 213 231 321 312 程序: Program ex401; Var i,n,k:integer; a:array[1..10] of integer; count:longint; {变量 count 记录不同排列的个数,这里用于控制换行} Procedure perm(k:integer); var j,p,t:integer;
79

begin if ① then begin inc(count); for p:=1 to k do write(a[p]:1); write(' '); if ( ② ) then writeln; exit; end; for j:=k to n do begin t:=a[k]; a[k]:=a[j]; a[j]:=t; ③ ; t:=a[k]; ④ ; end end; begin writeln('Entry n:'); read(n); count:=0; for i:=1 to n do a[i]:=i; ⑤ ; end. 2. 由键盘输入一个奇数 P (P<100,000,000),其个位数字不是 5,求一个整数 S,使 P×S = 1111...1 ( 在给定的条件下,解 S 必存在)。要求在屏幕上依次输出以下结果: (1)S 的全部数字。除最后一行外,每行输出 50 位数字。 (2) 乘积的数字位数。 例 1:输入 p=13,由于 13*8547=111111,则应输出(1)8547,(2)6 例 2:输入 p=147,则输出结果应为(1)755857898715041572184429327286470143613 (2)42,即等式的右端有 42 个 1。 程序: program ex402; var p,a,b,c,t,n:longint; begin
80

while (true) do begin writeln ('Input p, the last digit is 1 or 3 or 7 or 9:'); readln(p); if (p mod 2<>0)and(p mod 5<>0) then ⑥ ; {如果输入的数符合要求,结束循环 } end; a:=0; n:=0; while (a<p) do begin a:=a*10+1; inc(n); end; t:=0; repeat b:=a div p; write(b:1); inc(t); if ( ⑦ ) then writeln; c:= ⑧ ; a:= ⑨ inc(n); until c<=0; dec(n); writeln; writeln('n=', ⑩ ); end.

81

普及组(Pascal 语言)参考答案与评分标准 一、单项选择题:(每题 1.5 分) 1. D 2. B 3. B 4. C 5. B 6.B 7. C 8. A 9. D 10. D 11. C 12. D 13. C 14. B 15. C 16. B 17. B 18. A 19. C 20. B 二、问题求解:(每题 5 分) 1. 4 次 (1 分), 第一步:分成 3 组:27,27,26,将前 2 组放到天平上(4 分)。 2.有获胜策略(1 分),,第 1 次在第 5 堆中取 32 颗石子(4 分),。 三、阅读程序写结果 1. 10,10 (对 1 个数给 4 分,无逗号扣 1 分) 2. 6 28 496 8128 33550336 (前 2 个对 1 个数给 1 分,后 3 个对 1 个数给 2 分) 3. 5 4. 6 2 5 4 3 7 9 9 7 3 4 5 2 6(数字之间无空格扣 2 分) 四、完善程序(前 4 空(①--④),每空 2.5 分,后 6 空(⑤--⑩),每空 3 分) 1.① k=n (或 n=k) ② count mod 5=0 ③ perm(k+1) ④ a[k]:=a[j];a[j]:=t ⑤ perm(1) 2.⑥ break ⑦ t mod 50=0 ⑧ a-p*b(或 a-b*p) ⑨ c*10+1 (或 10*c+1) ⑩ n

82

NOIP2007 普及组初赛试题+答案 第十三届全国青少年信息学奥林匹克联赛初赛试题 ( 普及组 Pascal 语言 二小时完成) ● ● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●● 一、 单项选择题(共 20 题,每题 1.5 分,共计 30 分。每题有且仅有一个正确答案。 ) 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 Pascal 10.以下断电后仍能保存数据的有( ) 。 A.硬盘 B.高速缓存 C.显存 D.RAM 11.在下列关于计算机语言的说法中,正确的有( ) 。 A.高级语言比汇编语言更高级,是因为它的程序的运行效率更高 B.随着 Pascal、C 等高级语言的出现,机器语言和汇编语言已经退出了历史舞台 C.高级语言比汇编语言程序更容易从一种计算机上移植到另一种计算机上 D.C 是一种面向对象的高级计算机语言 83

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 的三根柱,在 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 对应的八进制数是( ) 。 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. (208A)16 C. (100000000110)2 D.(20212)8 20.已知 7 个节点的二叉树的先根遍历是 1 2 4 5 6 3 7(数字为节点的编号,以下同) ,中根遍历是 4 2 6 5 1 7 3,则该二叉树的后根遍历是 ( ) 。 A.4 6 5 2 7 3 1 B.4 6 5 2 1 3 7 C.4 2 3 1 5 4 7 D.4 6 5 3 1 7 2 二、问题求解(共 2 题,每题 5 分,共计 10 分) 。 1、 (子集划分)将 n 个数(1,2,?,n)划分成 r 个子集。每个数都恰好属于一个子集,任何两个不同的子集没有共同的数,也没有空集。 将不同划分方法的总数记为 S(n,r)。 例如, S(4,2)=7, 7 种不同的划分方法依次为{(1),(234)}, 这 {(2),(134)}, {(3),(124)}, {(4),(123)}, {(12),(34)}, {(13),(24)},{(14),(23)}。当 n=6,r=3 时,S(6,3)=______________。 (提示:先固定一个数,对于其余的 5 个数考虑 S(5,3)与 S(5,2),再分这两种情况对原固定的数进行分析。 ) 84

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; begin y:=20; for i:=0 to 4 do read(p); 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) else y:=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; begin k:=a; a:=b; b:=k; end; begin a:=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; begin n:=50; for i:=1 to n do a1:=0; n2:=round(sqrt(n)); for i:=2 to n2 do if (a1=0) then begin 85

t2:=n div i; for j:=2 to t2 do a1[i*j]:=1; end; t:=0; for i:=2 to n do if (a1=0) then begin write(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; Begin i:=ord(c); if ((i>=65) and (i<=90)) or ((i>=97) and (i<=122)) then isalpha:=true else isalpha:=false; end; function isdigit(c:char):Boolean; var i:integer; begin i:=ord(c); if (i>=48) and (i<=57) then isdigit:=true else isdigit:=false; end; procedure expand(s1:str1;var s2:str2); var i,j:integer; a,b,c:char; begin j:=1; c:=char(1); i:=0; while (i<=ord(s1[0])) do begin inc(i); c:=s1; if c='-' then begin {1} a:=s1[i-1]; b:=s1[i+1]; if (isalpha(a) and isalpha(b)) or (isdigit(a) and isdigit(b)) then begin dec(j); while (ord(upcase(a))<ord(upcase(s1[i+1]))) do begin s2[j]:=a; inc(j); inc(a); end; end else 86

begin s2[j]:=c; inc(j); end; end{1} else begin s2[j]:=c; inc(j); end; end; s2[0]:=char(j-2); end; begin 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; begin i:=1; j:=length(s); while (i<j) do begin t:=s; s:=s[j]; s[j]:=t; ;; end; end; begin writeln(‘continue? -1 for end.’); readln(kz); while ( )do begin readln(line); ; writeln(line); writeln(‘continue? -1 for end.’); readln(kz); end; end.

2233 2 -1 1 3 4115 4455 2、 (棋盘覆盖问题)在一个 2k×2 k 个方格组成的棋盘中恰有一个方格与其它方格不同(图中标记为-1 的方格) ,称之为特殊方格。现用 L 型(占 3 个小方格)纸片覆盖棋盘上除特殊方格的所有部分,各纸片不得重叠,于是,用到的纸片数恰好是(4 k-1)/3。在下表给出的一 个覆盖方案中,k=2,相同的 3 各数字构成一个纸片。 下面给出的程序使用分治法设计的,将棋盘一分为四,依次处理左上角、右上角、左下角、右下角,递归进行。请将程序补充完整。

(图画不了...郁闷) Program j402; type arr1=array[1..65] of integer; arr2=array[1..65] of arr1; var board:arr2; tile:integer; size,dr,dc:integer; 87

procedure chessboard(tr,tc:integer; dr,dc:integer; var size:integer); var t,s:integer; begin if (size=1) then ; t:=tile; inc(tile); s:=size div 2; if then chessboard(tr,tc,dr,dc,s) else begin board[tr+s-1]:=t; end; if (dr<tr+s) and (dc>=tc+s) then chessboard(tr,tc+s,dr,dc,s) else begin board[tr+s-1][tc+s]:=t; ; end; if (dr>=tr+s) and (dc<tc+s) then chessboard(tr+s,tc+s,dr,dc,s) else begin board[tr+s][tc+s]:=t; ; end; if (dr>=tr+s) and (dc>=tc+s) then chessboard(tr+s,tc+s,dr,dc,s) else begin board[tr+s][tc+s]:=t; ; end; end; procedure prt1(n:integer); var I,j:integer; begin for I:=1 to n do begin for j:=1 to n do write(board[j]:3); writeln; end; end; begin writeln(‘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 2 3 4 5 6 7 8 9 10 答案 D D C B B B B C C A 题号 11 12 13 14 15 16 17 18 19 20 答案 C A A A B D C D A A 二、问题求解: (每题 5 分) 1.90 2.210 三、阅读程序写结果 1. 15, 46(对 1 个数给 4 分,无逗号扣 1 分) 2. 3, 6 3. 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 88

4. wer2345defgh45456782qqq 四、完善程序(前 4 空(①--④) ,每空 2.5 分,后 6 空(⑤--⑩) ,每空 3 分) 1. ① inc(i) 或 i:=i+1 ② dec(j) 或 j:=j-1 ③ kz<>-1 ④ reverse(line) 2. ⑤ exit ⑥ (dr<tr+s)and(dc<tc+s) ⑦ 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)

89

NOIP2008 普及组初赛试题+答案 第十四届全国青少年信息学奥林匹克联赛初赛试题 ( 普及组 Pascal 语言 二小时完成) ● ● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 一、 单项选择题 (共 20 题,每题 1.5 分,共计 30 分。每题有且仅有一个正确答案.) 。 1.微型计算机中,控制器的基本功能是: A.控制机器各个部件协调工作 B.实现算术运算和逻辑运算 C.获取外部信息 D.存放程序和数据 2.设 A=TRUE B=fALSE C=TRUE D=fALSE 以下逻辑运算中表达式值为真的是: A.(A∧B)∨(C∧D∨┐A) B. ((┐A∧B)∨C)∧┐D) C. (B∨C∨D)∧D∧A D. A∧(D∨┐C)∧B 3.在下列关于图灵奖的说法中,不正确的是: A. 图灵奖是美国计算机协会于 1966 年设立的,专门奖励那些对计算机事业做出重要贡献的个人 B. 图灵奖有计算机界诺贝尔奖的称号 C. 迄今为止,还没有华裔计算机科学家获此殊荣 D. 图灵奖的名称取自计算机科学的先驱、英国科学家阿兰?图灵 4.计算机在工作过程中,若突然停电, )中的信息不会丢失。 ( A.ROM 和 RAM B.CPU C.ROM D.RAM 5.完全二叉树共有 2n-1 个节点,则它的叶节点数为: A. N-1 B.N C. 2*N D.2^N-1 6.在下列各项中, )不是操作系统软件。 ( A. Solaris B.linux C.Windows Vista D.Sybase 7.设栈 S 的初始状态为空,元素 A,B,C,D,E,f 依次入栈 S,出栈的序列为 B,D,f,E,C,A,则栈 S 的容量至少应该是: A.6 B.5 C.4 D.3 8.与十进制数 28.5625 相等的四进制数是: A.123.21 B.131.22 C.130.22 D.130.21 9.设字符串 S="Olympic",S 的非空字串的数目为 A.28 B.29 C.16 D.17 10.Web2.0 是近年来互联网的热门概念之一,其核心思想是互动与分享,下列网站中, )是典型的 Web2.0 应用。 ( A.Sina B.flickr C.Yahoo D.google 11.递归过程或函数调用时,处理参数和返回地址,通常使用一种称为( )的数据结构 A.队列 B.多维数组 C.线性表 D.栈 12.(2008)10+(5B)16 的结果是: A.(833)16 B.(2089)10 C.(4163)8 D.(100001100011)2 13.二叉树 T,已知其先根遍历为 1 2 4 3 5 7 6,中根遍历为 2 4 1 5 7 3 6,后跟遍历是: A. 4 2 5 7 6 3 1 B. 4 2 7 5 6 3 1 C.7 4 2 5 6 3 1 D. 4 2 7 6 5 3 1 14.将数组{8,23,4,16,77,-5,53,100}中元素从大到小按顺序排序,每次可以交换任意两个元素,最少要交换()次。 A.4 B.5 C.6 D.7 E.8 15.对有序数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,成功查找元素 19 的比较次数是: A.1 B.2 C.3 D.4 90

16.面向对象的程序设计(Object-Oriented Programming)是一种程序设计的方法论,它将对象作为程序设计的基本单元,将数据和程序 封装在对象中,以提高软件的重用性、灵活性、和扩展性。下面关于面向对象的程序设计说法中正确的是() 。 A.面向对象的程序设计方法通常采用自顶向下的设计方法进行设计。 B.面向对象的程序设计方法具有继承性(inheritance) 、封装性(encapsulation) 、多态性(polymorphism)等几大特点。 C.支持面向对象特性称为面向对象的编程语言,目前较为流行的有 C++,JAVA,C#等。 D.面向对象的程序设计的雏形来自于 Simula 语言,后来在 Smalltalk 语言的完善和标准化的过程中得到更多的扩展和对以前的思想的重 新注解。至今,Smalltalk 语言任然被视为面向对象的基础。 17.设 T 是一棵有 n 个定点的树,以下说法正确的是() 。 A.T 有 n 条边 B.T 是联通的 C.T 是无环的 D.T 有 n-1 条边。 19.NOIP 竞赛不推荐使用的语言环境有() 。 A.Dev-C++ B.Visual C++ C. free pascal D.lazarus 20.在 pascal 程序中,表达式(200 or 10)的值是: A.20 B.1 C.220 D.202 二、问题求解(共 2 题,每题五分,共计十分) : 1.书架上有 4 本不同的书 A、B、C、D,其中 A 和 B 是红皮的,C 和 D 是黑皮的,把这 4 本书摆放在书架上,满足:所有的黑皮书排在一起 的方法有: )种,满足 A 必须比 C 靠左,所有红皮书都要放在一起,黑皮书要放在一起,共有( )种摆法。 ( 2.有 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 三、阅读程序写结果(共 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); 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 91

输出: 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.type TT=array[0..20]of integer; prodecure func(var ary:TT;n:integer); var i,j,x:integer; begin i:=0;j:=n-1; while i<j do begin while (i<j) and (ary>0) do inc(i); while (i<j) and (ary[j]<0) do dec(j); if i<j then begin x:=ary; ary:=ary[j]; ary[j]:=x; inc(i); dec(j); end; end; end; var a:TT; i,m:integer; begin m:=10; for i:=0 to m-1 do read(a); func(a,m); for i:=1 to m-1 do write(a,' '); writeln; end. 输入:5 4 -6 -11 6 -59 22 -6 1 10 输出: prodecure solve(first:string;spos_f,epos_f:integer;mid:string;spos_m,epos_m:integer); var i,root_m:integer; begin 92

if spos_f > epos_f the nexit; for i:=spos_m to epos_m do if first[spos_f] = mid then begin root[m]:=i; break; end; solve(first,spos_s+1,spos_f+(root_m-spos_m),mid,spos_m,root_m-1); solve(first,spos_f+(root_m-spos_m)+1,epos_f,mid,root_m+1,epos_m); write(first[spos_f]); end; var first,mid:string; len:integer; begin readln(len); readln(first); readln(mid); solve(first,1,len,mid,1,len); writeln; end. 输入:7 ABDCEGF BDAGECF 输出: 四、完善程序 1.字符串替换 给定一个字符串 S(仅包含大小写字母) ,下面的程序将 S 中的每个字母用规定的字母替换,并输出 S 经过替换后的结果,程序的输入是两 个字符串,第一个是给定的字符串 S,第二个字符串 S’有 26 个字母组成,他是 a-z 的唯一排列,大小写不定,S’规定了每个字母对应 的替换字母:S’中的第一个字母是字母 A 和 a 的替换字母,及 S 中的 A 用该字母的大写替换,S 中的 a 用该字母的小写替换;S’中的第 二个字母是 B 和 b 的替换字母??以此类推。 var change,str:string; procedure CheckChangeRule; var i:integer; begin for i:=1 to 26 do begin __________1___________ change:=chr(ord(change)-ord('A')+ord('a')); end; end; procedure ChangeString; var len,i:integer; begin len:=length(str); 93

for i:=1 to len do begin if ____________2___________ then begin str[ui]:=upcase(change[ord(str)-ord('A')+1); end; else begin ________________3______________ end; end; end; begin readln(str); readln(change); CheckChangeRule; __________4__________; writeln(str); end.2.找第 k 大的数 给定一个长度为 1000000 的无序正整数数列,以及另一个数 n(1<=n<=1000000),然后以类似快速排序的方法找到序列中第 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:= ______1______ i:=left; j:=right; while i<j do begin while (i<j) and (______2_______) do dec(j); if i<j then begin a[i]:=a[j]; inc(i); end else break; 94

while (i<j) and (_______3_______) do inc(i); if i<j then begin a[j]:=a[i]; dec(j); end else break; end; _______4________; if i<n then begin inc(i);exit(FindKth(______5________));end; if i>n then begin dec(i);exit(________6_________);end; exit(i); end; var i:integer; begin randomize; m:=1000000; for i:=1 to m do read(a[i]); read(n); ans:=FindKth(1,m,n); writeln(a[ans]); end.

95

NOIP2008 年普及组(Pascal 语言)参考答案与评分标准 一、单项选择题: (每题 1.5 分) 1. A 2. B 3. C 4. C 5. B 6. D 7. C 8. D 9. A 10. B 11. D 12. A 13. B 14. B 15. B 16. A 17. B 18. A 19. B 20. D 二、问题求解: (共 2 题,每题 5 分,共计 10 分) 1.12 4 2.7(1->2->5->6) 三、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. 23 2. 2,3,1 3. 5 4 10 1 6 22 -59 -6 -11 -6 4. DBGEFCA (求树的后序遍历) 四.完善程序 (前 4 空,每空 2.5 分,后 6 空,每空 3 分,共 28 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不一定上报科学委员会审查) 1. ① (change[i] >= 'A') and (change[i] <= 'Z') (只写(change[i] <= 'Z')也对) ② (str[i] >= 'A') and (str[i] <= 'Z') (只写 str[i] <= 'Z'也对) ③ str[i] := change[ord(str[i]) - ord('a') +1]; ④ ChangeString; 2. ① a[left] ② a[j] < value (或 a[j] <= value) ③ a[i] > value (或 a[i] >= value) ④ a[i] := value; ⑤ i,right,n ⑥ FindKth(left, i, n)

96

第十五届全国青少年信息学奥林匹克联赛初赛试题
( 普及组 Pascal 语言 二小时完成 )

●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●

一. 单项选择题 (共 20 题,每题 1.5 分,共计 30 分。每题有且仅有一个正确答案。 ) 1、 关于图灵机下面的说法哪个是正确的: A) 图灵机是世界上最早的电子计算机。 B) 由于大量使用磁带操作,图灵机运行速度很慢。 C) 图灵机是英国人图灵发明的,在二战中为破译德军的密码发挥了重要作用。 D) 图灵机只是一个理论上的计算模型。 2、关于计算机内存下面的说法哪个是正确的: A) 随机存储器(RAM)的意思是当程序运行时,每次具体分配给程序的内存位置是随机而不确定的。 B) 1MB 内存通常是指 1024*1024 字节大小的内存。 C) 计算机内存严格说来包括主存(memory) 、高速缓存(cache)和寄存器(register)三个部分。 D) 一般内存中的数据即使在断电的情况下也能保留 2 个小时以上。 3、关于 BIOS 下面说法哪个是正确的: A) BIOS 是计算机基本输入输出系统软件的简称。Basic in out system B) BIOS 里包含了键盘、鼠标、声卡、显卡、打印机等常用输入输出设备的驱动程序。 C) BIOS 一般由操作系统厂商来开发完成。 D) BIOS 能供提各种文件拷贝、复制、删除以及目录维护等文件管理功能。 4、关于 CPU 下面哪个说法是正确的: A) CPU 全称为中央处理器(中央处理单元) 。 B) CPU 可以直接运行汇编语言。 C) 同样主频下,32 位的 CPU 比 16 位的 CPU 运行速度快一倍。 D) CPU 最早是由 Intel 公司发明的。 5、关于 ASCII,下面哪个说法是正确的: A) ASCII 码就是键盘上所有键的唯一编码。 B) 一个 ASCII 码使用一个字节的内存空间就能够存放。 C) 最新扩展的 ASCII 编码方案包含了汉字和其他欧洲语言的编码。 D) ASCII 码是英国人主持制定并推广使用的。 6、下列软件中不是计算机操作系统的是: A) Windows B) Linux C) OS/2

D) WPS

7、关于互联网,下面的说法哪一个是正确的: A) 新一代互联网使用的 IPv6 标准是 IPv5 标准的升级与补充。 B) 互联网的入网主机如果有了域名就不再需要 IP 地址。 C) 互联网的基础协议为 TCP/IP 协议。 D) 互联网上所有可下载的软件及数据资源都是可以合法免费使用的。 8、关于 HTML 下面哪种说法是正确的: A) HTML 实现了文本、图形、声音乃至视频信息的统一编码。
97

B) HTML 全称为超文本标记语言。 C) 网上广泛使用的 Flash 动画都是由 HTML 编写的。 D) HTML 也是一种高级程序设计语言。 9、关于程序设计语言,下面哪个说法是正确的: A) 加了注释的程序一般会比同样的没有加注释的程序运行速度慢。 B) 高级语言开发的程序不能使用在低层次的硬件系统(如:自控机床)或低端手机上。 C) 高级语言相对于低级语言更容易实现跨平台的移植。 D) 以上说法都不对。 10、已知大写字母A的ASCII编码为65(十进制) ,则大写字母J的十进制ASCII编码为: A) 71 B) 72 C) 73 D) 以上都不是 11、十进制小数125.125对应的八进制数是 A) 100.1 B) 175.175 C) 175.1 D) 100.175 12、有六个元素 FEDCBA 从左至右依次顺序进栈,在进栈过程中会有元素被弹出栈。问下列哪一个不可能是合法的出 栈序列? A) EDCFAB B) DECABF C) CDFEBA D) BCDAEF 13、 表达式 a*(b+c)-d 的后缀表达式是: A) abcd*+- B) abc+*dC) abc*+d-

D) -+*abcd

14、一个包含 n 个分支结点(非叶结点)的非空二叉树,它的叶结点数目最多为: A) 2n + 1 B) 2n-1 C) n-1 D) n+1 15、快速排序最坏情况下的算法复杂度为: A) O(log2n) B) O(n) C) O(nlog2n)

D) O(n2)

16. 有一个由 4000 个整数构成的顺序表,假定表中的元素已经按升序排列,采用二分查找定位一个元素。则最多需要 几次比较就能确定是否存在所查找的元素: A) 11 次 B) 12 次 C) 13 次 D) 14 次 17、排序算法是稳定的意思是关键码相同的记录排序前后相对位置不发生改变,下列哪种排序算法是不稳定的: A) 冒泡排序 B) 插入排序 C) 归并排序 D) 快速排序 18、已知 n 个顶点的有向图,若该图是强连通的(从所有顶点都存在路径到达其他顶点) ,则该图中最少有多少条有向 边? A) n B) n+1 C) n-1 D) n*(n-1) 19、全国信息学奥林匹克的官方网站为参与信息学竞赛的老师同学们提供相关的信息和资源,请问全国信息学奥林匹 克官方网站的网址是: A) http://www.noi.com/ B) http://www.noi.org/ C) http://www.noi.cn/ D) http://www.xinxixue.com/ 20、在参加 NOI 系列竞赛过程中,下面哪一种行为是 不 被严格禁止的: A) 携带书写工具,手表和不具有通讯功能的电子词典进入赛场。 B) 在联机测试中通过手工计算出可能的答案并在程序里直接输出答案来获取分数。 C) 通过互联网搜索取得解题思路。
98

D) 在提交的程序中启动多个进程以提高程序的执行效率。 二.问题求解(共 2 题,每空 5 分,共计 10 分) 1.小陈现有 2 个任务 A,B 要完成,每个任务分别有若干步骤如下:A=a1->a2->a3,B=b1->b2->b3->b4->b5。在 任何时候,小陈只能专心做某个任务的一个步骤。但是如果愿意,他可以在做完手中任务的当前步骤后,切换至另一 个任务, 从上次此任务第一个未做的步骤继续。 每个任务的步骤顺序不能打乱, 例如??a2->b2->a3->b3??是合法的, 而??a2->b3->a3->b2??是不合法的。小陈从 B 任务的 b1 步骤开始做,当恰做完某个任务的某个步骤后,就停工回 家吃饭了。当他回来时,只记得自己已经完成了整个任务 A,其他的都忘了。试计算小陈饭前已做的可能的任务步骤 序列共有 种。 2.有如下的一段程序: 1. 2. 3. 4. 5. 6. a:=1; b:=a; d:=-a; e:=a+d; c:=2*d; f:=b+e-d;

7. g:=a*f+c; 现在要把这段程序分配到若干台(数量充足)用电缆连接的 PC 上做并行执行。每台 PC 执行其中的某几个语句,并可 随时通过电缆与其他 PC 通讯,交换一些中间结果。假设每台 PC 每单位时间可以执行一个语句,且通讯花费的时间不 计。则这段程序最快可以在 单位时间内执行完毕。注意:任意中间结果只有在某台 PC 上已经得到,才可以 被其他 PC 引用。例如若语句 4 和 6 被分别分配到两台 PC 上执行,则因为语句 6 需要引用语句 4 的计算结果,语句 6 必须在语句 4 之后执行。 三.阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. var a, b: integer; function work(a, b: integer): integer; begin if a mod b <> 0 then work := work(b, a mod b) else work := b; end; begin read(a, b); writeln(work(a, b)); end. 输入:20 12 输出:_______
99

2. var a, b: array[0..2] of integer; i, j, tmp: integer; begin for i := 0 to 2 do read(b[i]); for i := 0 to 2 do begin a[i] := 0; for j := 0 to i do begin inc(a[i], b[j]); inc(b[a[i] mod 3], a[j]); end; end; tmp := 1; for i := 0 to 2 do begin a[i] := a[i] mod 10; b[i] := b[i] mod 10; tmp := tmp * (a[i] + b[i]); end; writeln(tmp); end. 输入:2 3 5 输出:_______ 3. const c = 2009; var n, p, s, i, j, t: integer; begin read(n, p); s := 0; t := 1; for i := 1 to n do begin t := t * p mod c; for j := 1 to i do s := (s + t) mod c; end; writeln(s);
100

end. 输入:11 2 输出: 4. var a: string; n: integer; procedure getnext(var str: string); var l, i, j, k: integer; temp: char; begin l := length(str); k := l - 1; while (k>=1) and (str[k]>str[k+1]) do dec(k); i := k + 1; while (i<=l) and (str[i]>str[k]) do inc(i); temp := str[k]; str[k] := str[i-1]; str[i-1] := temp; for i := l downto k + 1 do for j := k + 1 to i - 1 do if str[j] > str[j+1] then begin temp := str[j]; str[j] := str[j+1]; str[j+1] := temp; end; end; begin read(a); read(n); while n > 0 do begin getnext(a); dec(n); end; write(a); end. 输入:NOIP 3 输出:
101

四.完善程序 (前 8 空,每空 3 分,后 2 空,每空 2 分,共 28 分) 1. (最大连续子段和)给出一个数列(元素个数不多于 100) ,数列元素均为负整数、正整数、0。请找出数列中 的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数 最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为 4,-5,3,2,4 时,输出 9 和 3;数列为 1 2 3 -5 0 7 8 时,输出 16 和 7。 var a: array[1..100] of integer; n, i, ans, len, tmp, beg: integer; begin read(n); for i := 1 to n do read(a[i]); tmp := 0; ans := 0; len := 0; beg := ① ; for i := 1 to n do begin if tmp + a[i] > ans then begin ans := tmp + a[i]; len := i - beg; end else if ( ② ) and (i - beg > len) then len := i - beg; if tmp + a[i] ③ then begin beg := ④ ; tmp := 0; end else ⑤ ; end; writeln(ans, ' ', len); end. 2. (国王放置) 在 n*m 的棋盘上放置 k 个国王,要求 k 个国王互相不攻击,有多少种不同的放置方法。假设国王 放 置 在 第 (x,y) 格 , 国 王 的 攻 击 的 区 域 是 :(x-1,y-1), (x-1,y),(x-1,y+1),(x,y-1),(x,y+1),(x+1,y-1),(x+1,y),(x+1,y+1)。读入三个数 n,m,k,输出答案。 题目利用回溯法求解。棋盘行标号为 0~n-1,列标号为 0~m-1。 var n, m, k, ans: integer; hash: array[0..4, 0..4] of integer;
102

procedure work(x, y, tot: integer); var i, j: integer; begin if tot = k then begin inc(ans); exit; end; repeat while hash[x, y] <> 0 do begin inc(y); if y = m then begin inc(x); y := ① ; end; if x = n then exit; end; for i := x - 1 to x + 1 do if (i >= 0) and (i < n) then for j := y - 1 to y + 1 do if (j >= 0) and (j < m) then ② ; ③ ; for i := x - 1 to x + 1 do if (i >= 0) and (i < n) then for j := y - 1 to y + 1 do if (j >= 0) and (j < m) then ④ inc(y); if y = m then begin inc(x); y := 0; end; if x = n then exit; until false; end; begin read(n, m, k); ans := 0; fillchar(hash, sizeof(hash), 0); ⑤ ;
103

;

writeln(ans); end.

104

第十六届全国青少年信息学奥林匹克联赛初赛试题 (普及组 Pascal 语言 两小时完成) 一、单项选择题(共 20 题,每题 1.5 分,共计 30 分。每题有且仅有一个正确选项。) 1. 2E+03 表示( )。 A.2.03 B.5 C.8 D.2000 2.一个字节(byte)由( )个二进制组成。 A.8 B.16 C.32 D.以上都有可能 3.以下逻辑表达式的值恒为真的是( )。 A.P∨(┓P∧Q)∨(┓P∧┓Q) B.Q∨(┓P∧Q)∨(P∧┓Q) C.P∨Q∨(P∧┓Q)∨(┓P∧Q) D.P∨┓Q∨(P∧┓Q)∨(┓P∧┓Q) 4.Linux 下可执行文件的默认扩展名是( )。 A. exe B. com C. dll D.以上都不是 5.如果树根算第 1 层,那么一颗 n 层的二叉树最多有( )个结点。 n n n n+1 A. 2 -1 B. 2 C. 2 +1 D. 2 6.提出“存储程序”的计算机工作原理的是( )。 A. 克劳德?香农 B. 戈登?摩尔 C. 查尔斯?巴比奇 D.冯?诺依曼 7.设 X、Y、Z 分别代表三进制下的一个数字,若等式 XY + ZX = XYX 在三进制下成立,那么同样在三进制下,等式 XY * ZX = ( )也成立。 A. YXZ B. ZXY C. XYZ D.XZY 8.Pascal 语言、C 语言和 C++语言都属于( )。 A. 面向对象语言 B. 脚本语言 C. 解释性语言 D.编译性语言 9.前缀表达式“+ 3 * 2 + 5 12 ” 的值是( )。 A. 23 B. 25 C. 37 D. 65 10.主存储器的存取速度比中央处理器(CPU)的工作速度慢的多,从而使得后者的效率受到影响。而根据局部性原理, CPU 所访问的存储单元通常都趋于一个较小的连续区域中。 于是, 为了提高系统整体的执行效率, CPU 中引入了( )。 在 A. 寄存器 B. 高速缓存 C. 闪存 D. 外存 11.一个字长为 8 位的整数的补码是 11111001,则它的原码是( )。 A. 00000111 B. 01111001 C. 11111001 D.10000111 12.基于比较的排序时间复杂度的下限是( ),其中 n 表示待排序的元素个数。 2 A. O(n) B. O(n log n) C. O(log n) D. O(n ) 13.一个自然数在十进制下有 n 位,则它在二进制下的位数与( )最接近。 n A. 5n B. n*log210 C. 10*log2 n D. 10 log2 n 14.在下列 HTML 语句中,可以正确产生一个指向 NOI 官方网站的超链接的是( )。 A. <a url=http://www.noi,cn>欢迎访问 NOI 网站</a> B. <a href=http://www.noi,cn>欢迎访问 NOI 网站</a> C. <a> http://www.noi,cn </a> D. <a name=http://www.noi,cn>欢迎访问 NOI 网站</a> 15.元素 R1、R2、R3、R4、R5 入栈的顺序为 R1、R2、R3、R4、R5。如果第 1 个出栈的是 R3,那么第 5 个出栈的不可 能是( )。 A. R1 B. R2 C. R4 D. R5 16. 双向链表中有两个指针域 llink 和 rlink,分别指向该结点的前驱及后继。设 p 指向链表中的一个结点,它的左右 结点均为非空。现要求删除结点 p,则下列语句序列中错误的是( )。 A.p^.rlink^.llink=p^.rlink; p^.llink^.rlink=p^.llink; delete p; B.p^.llink^.rlink=p^.rlink; p^.rlink^.llink = p^.llink; delete p; C.p^.rlink^.llink = p^.llink;
105

p^.rlink^.llink ^.rlink = p^.rlink; delete p; D.p^.llink^.rlink = p^.rlink; p^.llink^.rlink^.link = p^.llink; delete p; 17. 一棵二叉树的前序遍历序列是 ABCDEFG,后序遍历序列是 CBFEGDA,则根结点的左子树的结点个数可能是( )。 A.2 B. 3 C. 4 D. 5 18. 关于拓扑排序,下列说法正确的是( )。 A.所有连通的有向图都可以实现拓扑排序 B.对同一个图而言,拓扑排序的结果是唯一的 C.拓扑排序中入度为 0 的结点总会排在入度大于 0 的结点的前面 D.拓扑排序结果序列中的第一个结点一定是入度大于 0 的点 19.完全二叉树的顺序存储方案,是指将完全二叉树的结点从上到下、从左到右依次存放到一个顺序结构的数组中。假 定根结点存放在数组的 1 号位置上,则第 k 号结点的父结点如果存在的话,应当存放在数组中的( )号位置。 A. 2k B. 2k+1 C. k/2 下取整 D. (k+1)/2 20. 全国青少年信息学奥林匹克系列活动的主办单位是( )。 A. 教育部 B. 科技部 C. 共青团中央 D. 中国计算机学会 三、问题求解(共 2 题,每题 5 分,共计 10 分) 1.LZW 编码是一种自适应词典编码。在编码的过程中,开始时只有一部基础构造元素的编码词典,如果在编码的过程 中遇到一个新的词条,则该词条及一个新的编码会被追加到词典中,并用于后继信息的编码。 举例说明,考虑一个待编码的信息串:“xyx yy yy xyx”。初始词典只有 3 个条目,第一个为 x,编码为 1;第 二个为 y,编码为 2;第三个为空格,编码为 3;于是串“xyx”的编码为 1-2-1(其中-为编码分隔符),加上后面的 一个空格就是 1-2-1-3。但由于有了一个空格,我们就知道前面的“xyx”是一个单词,而由于该单词没有在词典中, 我们就可以自适应的把这个词条添加到词典里,编码为 4,然后按照新的词典对后继信息进行编码,以此类推。于是, 最后得到编码:1-2-1-3-2-2-3-5-3-4。 现在已知初始词典的 3 个条目如上述,则信息串“yyxy xx yyxy xyx xx xyx”的编码是 2. 队列快照是指在某一时刻队列中的元素组成的有序序列。现有 3 个正整数元素依次入队、出队。已知它们的和为 8, 则共有_________种可能的不同的队列快照(不同队列的相同快照只计一次)。例如,"5 1"、"4 2 2"、""都是可能的 队列快照;而"7"不是可能的队列快照,因为剩下的 2 个正整数的和不可能是 1。 四、阅读程序写结果(共 4 题,每题 8 分,其中第 4 题(1)(2)各 4 分,共计 32 分) 1. var if x<a2 then a1,a2,a3,x:integer; if x<a1 then procedure swap(var a,b:integer); writeln(x,‘ ’,a1, ‘ ’, a3, var ‘ ’,a3) t:integer; else begin writeln(a1,‘ ’,x, ‘ ’, a2, t:=a; ‘ ’,a3) a:=b; else b:=t; if x<a3 then end; writeln(a1,‘ ’,a2, ‘ ’, x, begin ‘ ’,a3) readln(a1,a2,a3); else if a1>a2 then writeln(a1,‘ ’,a2, ‘ ’, a3, swap(a1,a2); ‘ ’,x) if a2>a3 then end. swap(a2,a3); 输入 if a1>a2 then 91 2 20 swap(a1,a2); 77 输出:__________ readln(x);
106

2. Var n,m,i:integer; function rSum(j:integer):integer; var sum:integer; begin sum:=0; while j<>0 do begin sum:=sum*10+(j mod 10); j:=j div 10; end; rSum:=sum; end; begin readln(n,m); for i:=n to m do if i=rSum(i) then write(I,’’); end. 输入:90 120 输出:__________

3. var s:string; i:integer; m1,m2:char; begin readln(s); m1:=’’; m2:=’’; for i:=1 to length(s) do if s[i]>m1 then begin m2:=m1; m1:=s[i]; end else if s[i]>m2 then m2:=s[i]; writeln(ord(m1),’ ’,ord(m2)); end. 输入:Expo 2010 Shanghai China 输出: 提示: 字符 ASCII 码 空格 32 ‘0’ 48 ‘A’ 65 ‘a’ 97

4. const num = 5; var n: integer; function r(n : integer) : integer; var i : integer; begin if n <= num then begin r := n; exit; end; for i :=1 to num do if r(n-i) < 0 then begin r:=i; exit; end; r:=-1; end;

begin readln(n); writeln(r(n)); end. (1) 输入:7 输出:__________(4 分) (2) 输入 16 输出:__________(4 分)

107

五、完善程序 1.(哥德巴赫猜想)哥德巴赫猜想是指,任一大于 2 的偶数都可写成两个质数的和。迄今为止,这仍然是一个著名的 世界难题,被誉为数学王冠上的明珠。试编写程序,验证任一大于 2 且不超过 n 的偶数都能写成两个质数之和。 const size=1000; var n,r,I,j,k,ans:integer; p:array[1..size] of integer; tmp:Boolean; begin readln(n); r:=1; p[1]:=2; for i:=3 to n do begin ① ; for j:=1 to r do if I mod ② =0 then begin tmp:=false; break; end; if tmp then begin inc(r); ③ ; end; end; ans:=0; for i:=2 to (n div 2) do begin tmp:=false; for j:=1 to r do for k:=j to r do if i+i= ④ begin tmp:=true; break; end; if tmp then

then

108

inc(ans); end; writeln(ans); end. 若输入 n 为 2010,则输出 ⑤ 时表示验证成功,即大于 2 且不超过 2010 的偶数都满足哥德巴赫猜想。 2.(过河问题) 在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥走到河的左岸.在伸手不见五指 的黑夜里,过桥时必须借照灯光来照明,不幸的是,他们只有一盏灯.另外,独木桥上最多能承受两个人同时经过,否则将 会坍塌.每个人单独过独木桥都需要一定的时间,不同的人要的时间可能不同.两个人一起过独木桥时,由于只有一盏灯, 所以需要的时间是较慢的那个人单独过桥所花费的时间.现在输入 N(2<=N<1000)和这 N 个人单独过桥需要的时间,请计 算总共最少需要多少时间,他们才能全部到达河左岸. 例如,有 3 个人甲、乙、丙,他们单独过桥的时间分别为 1 2 4,则总共最少需要的时间为 7.具体方法是: 甲 乙一起过桥到河的左岸,甲单独回到河的右岸将灯带回,然后甲,丙在一起过桥到河的左岸,总时间为 2+1+4=7. CONST SIZE = 100; INFINITY = 10000; LEFT = true; RIGHT = false; LEFT_TO_RIGHT = true; RIGHT_TO_LEFT = false; var n, i : integer; time : array[1..Size] of integer; pos :array[1..Size] of Boolean; function max(a, b :integer) : integer; begin if a > b then max := a else max := b; end; function go(stage : boolean) : integer; var i, j, num, tmp, ans : integer; begin if (stage = RIGHT_TO_LEFT) then begin num := 0; ans :=0; for i := 1 to n do if pos[i] = Rignt then begin inc(num); if time[i] > ans then ans := time[i]; end; if __________ then
109

begin go := ans; exit; end; ans := INFINITY; for i := 1 to n – 1 do if pos[i] = RIGHT then for j := i+1 to n do if pos[j] = RIGHT then begin pos[i] := LEFT; pos[j] := LEFT; tmp := max(time[i], time[j]) + _______; if tmp < ans then ans := tmp; pos[i] := RIGHT; pos[j] := RIGHT; end; go := ans; end else if (stage = LEFT_TO_RIGHT) then begin ans := INFINITY; for i := 1 to n do if _______ then begin pos[i] := RIGHT; tmp := ________; if tmp < ans then ans := tmp; _________; end; go := ans; end else go := 0; end; begin readln(n); for i := 1 to n do begin read(time[i]); pos[i] := RIGHT; end; writeln(go(RIGHT_TO_LEFT)); end.
110

参考答案:
一、单项选择题(共 20 题,每题 1.5 分,共计 30 分) 题号 答案 题号 答案 1 D 11 D 2 A 12 B 3 A 13 B 4 D 14 B 5 A 15 B 6 D 16 A 7 B 17 A 8 D 18 D 9 C 19 C 10 B 20 D

二、问题求解(共 2 题,每题 5 分,共计 10 分) 1.2-2-1-2-3-1-1-3-4-3-1-2-1-3-5-3-6(或 22123113431213536) 2.49 三、阅读程序写结果(共 4 题,每题 8 分,其中第 4 题(1)、(2)各 4 分,共计 32 分)1.2 20 77 91 2.99 101 111 3.120 112 4.(1)1 (2)4 四、完善程序(前 4 空,每空 2.5 分,后 6 空,每空 3 分,共计 28 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不一定上报科学委员会审查) 1.① tmp = 1 ② p[j] ③ p[r] = i ④ p[j] + p[k](或 p[k] + p[j]) ⑤ 1004 2.① num <= 2(或 num < 3 或 num == 2) ② go(LEFT_TO_RIGHT) ③ pos[i] == LEFT(或 LEFT == pos[i]) ④ time[i] + go(RIGHT_TO_LEFT)(或 go(RIGHT_TO_LEFT) + time[i]) ⑤ pos[i] = LEFT 本小题中,LEFT 可用 1 代替,LEFT_TO_RIGHT 可用 1 代替,RIGHT_TO_LEFT 可用 0 代替。

111

第十七届全国青少年信息学奥林匹克联赛初赛试题
(普及组 Pascal 语言两小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、单项选择题(共 20 题,每题 1.5 分,共计 30 分.每题有且仅有一个正确选项。) 1.在二进制下,1100011+( )=1110000。 A.1011 B.1101 C.1010 D.1111 2.字符“O”的 ASCII 码为 48,则字符“9”的 ASCII 码为( )。 A.39 B.57 C.120 D.视具体的计算机而定 3.一片容量为 8GB 的 SD 卡能存储大约( )张大小为 2MB 的数码照片。 A.1600 B.2000 C.4 000 D.16000 4.摩尔定律(Moore’s law)是由英特尔创始入之一戈登·摩尔(Gordon Moore)提出来的。根据摩尔定律,在过去几 十年以及在可预测的未来几年,单块集成电路的集成度大约每( )个月翻一番。 A.1 B.6 C.18 D.36 5.无向完全图是图中每对顶点之间都恰有一条边的简单图。己知无向完全图 G 有 7 个顶点,则它共有( )条边。 A.7 B.21 C.42 D.49 6.寄存器是( )的重要组成部分。 A.硬盘 B.高速缓存 C.内存 D.中央处理器(CPU) 7.如果根结点的深度记为 1,则一棵恰有 2011 个叶结点的二叉树的深度最少是( )。 A.10 B.11 C.12 D.13 8.体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。每个同学按顺序来到操场时, 都从排尾走向排头,找到第一个比自己高的同学,并站在他的后面。这种站队的方法类似于( )算法。 A.快速排序 B.插入排序 c.冒泡排序 D.归并排序 9.一个正整数在二进制下有 100 位,则它在十六进制下有( )位。 A.7 B.13 C.25 D.不能确定 10.有人认为,在个人电脑送修前,将文件放入回收站中就是已经将其删除了。这种想法是( )。 A.正确的,将文件放入回收站意味着彻底删除、无法恢复 B.不正确的,只有将回收站清空后,才意味着彻底删除、无法恢复 c.不正确的,即使将回收站清空,文件只是被标记为删除,仍可能通过恢复软件找回 D.不正确的,只要在硬盘上出现过的文件,永远不可能被彻底删除 11.广度优先搜索时,需要用到的数据结构是( )。 A.链表 B.队列 C.栈 D.散列表 12.在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是指( )。 A.程序运行时理论上所占的内存空间 B。程序运行时理论上所占的数组空间 c.程序运行时理论上所占的硬盘空间 D.程序源文件理论上所占的硬盘空间 13.在含有 n 个元素的双向链表中查询是否存在关键字为 k 的元素,最坏情况下运行的时间复杂度是( )。 A.O(I) B.O(10g n) C.O(n) D.O(n log n) 14.生物特征识别,是利用人体本身的生物特征进行身份认证的一种技术。目前,指纹识别、虹膜识别、人脸识别等 技术己广泛应用于政府、银行、安全防卫等领域。以下不属于生物特征识别技术及其应用的是( )。

112

15.现有一段文言文,要通过二进制哈夫曼编码进行压缩。简单起见,假设这段文言文只由 4 个汉字“之”、“乎”、 “者”、“也”组成,它们出现的次数分别为 700、600、300、200。那么,“也”字的编码长度是( )。 A.1 B.2 C.3 D.4 16.关于汇编语言,下列说法错误的是( )。 A.是一种与具体硬件相关的程序设计语言 B.在编写复杂程序时,相对于高级语言而言代码量较大,且不易调试 c.可以直接访问寄存器、内存单元、以及 I/O 端口 D.随着高级语言的诞生,如今己完全被淘汰,不再使用 17. ( )是一种选优搜索法,按选优条件向前搜索,以达到目标。当探索到某一步时,发现原先选择并不优或达不 到目标,就退回一步重新选择。 A.回溯法 B.枚举法 c.动态规划 D.贪心法 18.1956 年( )授予肖克利(William Shockley)、巴丁(John Bardeen)和布拉顿(Walter Brattain),以表彰他们对半 导体的研究和晶体管效应的发现。 A.诺贝尔物理学奖 B.约翰·冯·诺依曼奖 C.图灵奖 D.高德纳奖(Donald E.Knuth Prize) 19.对一个有向图而言,如果每个节点都存在到达其他任何节点的路径,那么就称它是强连通的。例如,右图就是一 个强连通图。事实上,在删掉边( )后,它依然是强连通的。 A.a B.b C.c D.d

20.从 ENIAC 到当前最先进的计算机,冯·诺依曼体系结构始终占有重要的地位。冯·诺依曼体系结构的核心内容是、 ( )。 A.采用开关电路 B.采用半导体器件 C.采用存储程序和程序控制原理 D.采用键盘输入 二、问题求解(共 2 题,每题 5 分,共计 10 分) 1. 每份考卷都有一个 8 位二进制序列号。 当且仅当一个序列号含有偶数个 1 时, 它才是有效的。 例如, 00000000、 01010011 都是有效的序列号,而 11111110 不是。那么,有效的序列号共有______________个。 2.定义字符串的基本操作为:删除一个字符、插入一个字符和将一个字符修改成另一个字符这三种操作。将字符串 A 变成字符串 B 的最少操作步数,称为字符串 A 到字符串 B 的编辑距离。字符串“ABCDEFG”到字符串“BADECG”的编辑 距离为_____________。 三、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. Var n,m,I,ans:integer; begin readln(n,m); ans:=O;
113

i:=n; while i<=m d0 begin ans:=ans+i; inc(i); end; writeln(ans); end. 输入:10 20 输出: 2. Var map,tel:string; i:integer; begin map:=’22233344455566677778889999’; readln(tel); for i:=1 to length(tel) do if (tel[i] >= ’O’) and (tel[i] <= ’9’) then write(tel[i]) else if (tel[i]>=’A’) and (tel[i] <= ’Z’) then write(map[ord(tel[i])-0rd(’A’) +1]); end. 输入:CCF-NOIP-2011 输出:________________________ 3. const SIZE=100; Var n,i,sum,x:integer; a:array[1. .SIZE] of integer; begin readln(n); 、 fillchar(a,sizeof(a),O); for i:=1 to n do begin read(x); inc(a[x]); end; i:=O; sum:=0; while sum<(n div 2 + 1) do begin inc(i); sum:=sum+a[i]; end; writeln(i); end.
114

输入: 11 4 5 6 6 4 3 3 2 3 2 1 输出:_____________________ 4. Var n,m:integer; function solve(n,m:integer):integer; Var i,sum:integer; begin if m=1 then begin solve:=1; exit; end; sum:=O; for i:=1 to n-1 do sum:=sum+solve(i,m-1); solve:=sum; end; begin readln(n,m); writeln(solve(n,m)); end. 输入:7 4 输出:________________________ 四、完善程序(前 11 空,每空 2 分,后 2 空,每空 3 分,共计 28 分) 1. (子矩阵)输入一个 n1+m1 的矩阵 a,和 n2+m2 的矩阵 b,问 a 中是否存在子矩阵和 b 相等。若存在,输出所有子 矩阵左上角的坐标;若不存在输出“There is no answer”。 const SIZE=50; var n1,m1,n2,m2,i,j,k1,k2:integer; a,b:array[1. .SIZE,1. .SIZE] of integer; good,haveAns:boolean; begin readln(n1,m1); for i :=1 to n1 do for j :=1 t0 m1 do read(a[i][j]); readln(n2,m2); for i:=1 to n2 do for j:=1 to m2 do ① ; haveAns:=false;
115

for i:=1 to n1-n2+1 do for j:=1 to ② do begin ③ ; for k1:=1 to n2 do for k2:=1 to ④ do if a[i+k1-1][j+k2-1]<>b[k1][k2】then good:=false; if good then begin writeln(i,’ ’,j); ⑤ ; end; end; if not haveAns then writeln(’There is no answer’); end. 2.(大整数开方)输入一个正整数 n(1<n<10100),试用二分法计算它的平方根的整数部分。 const SIZE=200; type hugeint=record len:integer; num:array[1. .SIZE]of integer; end; //len 表示大整数的位数;num[1]表示个位、num[2]表示十位,以此类推 var s:string; i:integer; target,left,middle,right:hugeint; function times(a,b:hugeint):hugeint; //计算大整数 a 和 b 的乘积 var i,j:integer; ans:hugeint; begin fillchar(ans,sizeof(ans),O); for i:=1 to a.1en do for j:=1 to b.1en do ① :=ans.num[i+j-1] +a.num[i] *b.num[j]; for i:=1 to a.1en+b.1en do begin ans.num[i+1]:=ans.num[i+1] +ans.num[i] div 10; ② ; if ans.num[a.1en+b.1en]>0 then ans.1en:=a.1en+b.1en
116

else ans.1en:=a.1en+b.1en-1; end; times:=ans; end; function add(a,b :hugeint) :hugeint; //计算大整数 a 和 b 的和 var i:integer; ans:hugeint; begin fillchar(ans.num,sizeof(ans.num),0); if a.1en>b.1en then ans.1en:=a.1en else ans.1en:=b.1en; for i:=1 to ans.1en do begin ans.num[i]:= ③ ; ans.num[i+1]:=ans.num[i+1]+ans.num[i]div 10; ans.num[i]:=ans.num[i]mod 10; end; if ans.num[ans.1en+1]>O then inc(ans.1en); add:=ans; end; function average(a,b:hugeint) :hugeint; //计算大整数 a 和 b 的平均数的整数部分 Var i:integer; ans:hugeint; begin ans:=add(a,b); for i :=ans.1en down to 2 do begin ans.num[i-1] :=ans.num[i-1] + ( ④ ) * 10; ans.num[i]:=ans.num[i] div 2; end; ans.num[1]:=ans.num[1] div 2; if ans.num[ans.1en]=0 then dec(ans.1en); average:=ans; end; function plustwo(a:hugeint):hugeint; //计算大整数 a 加 2 后的结果 Var i:integer; ans:hugeint;
117

begin ans:=a; ans.num[1]:=ans.num[1] +2; i:=1; while (i<=ans.1en) and (ans.num[i] >=10) do begin ans.num[i+1]:=ans.num[i+1] +ans.num[i] div 10; ans.num[i]:=ans.num[i] mod 10; inc(i); end; if_ans.num[ans.1en+1]>O then ⑤ ; plustwo:=ans; end; function over(a,b:hugeint):boolean; //若大整数 a>b 则返回 1,否则返回 O var i:integer; begin if( ⑥ )then begin over:=false; exit; end; if a.1en>b.1en then begin over:=true; exit; end; for i:=a.1en downto 1 do begin if a.num[i] <b.num[i] then begin over:=false; exit; end; if a.num[i] >b.num[i] then begin over:=true; exit; end; end; over:=false; end; begin readln(s);
118

fillchar(target.num,sizeof(target.num),O); target.1en:=length(s); for i:=1 to target.1en do target.num[i]:=ord(s[target.1en-i+1])⑦ fillchar(1eft.num,sizeof(1eft.num),0); left.1en:=1; left.num[1]:=1; right:=target; repeat middle:=average(1eft,right); if over( ⑧ ) then right:=middle else left:=middle; until over(plustwo(1eft),right); for i:=left.1en downto 1 do write(1eft.num[i]); writeln; end. NOIP2011 普及组初赛(Pascal)参考答案 一、BBCCB DBBCC BACCC DAAAC 二 (1) 128 (2) 3(ABCDEFG BCDEFG BADEFG BADECG) 三 (1) 165(n..m 的自然数求和) (2) 22366472011(手机键盘输入 CCFNOIP2011 要按什么键) (3) 3(中位数) (4) 20(杨辉三角) 四.1 (1) read(b[i][j]);或 read(b[i,j]) (2) m1 - m2 + 1 (3) good := true; (4) m2 (5) haveAns := true; 四.2 (1) ans.num[i + j - 1] (2) ans.num[i]:= ans.num[i] mod 10 (3) ans.num[i] + a.num[i] + b.num[i] (4) ans.num[i] mod 2 (5) inc(ans.len) (6) a.len < b.len (7) 48 (8) times(middle, middle), target

;

119


更多相关文档:

1995-2012历年全国青少年信息学奥林匹克联赛初赛试题(

1995-2012历年全国青少年信息学奥林匹克联赛初赛试题(_学科竞赛_初中教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 1995-2012历年全国青少年信息学奥林匹克联赛...

1995-2012历年全国青少年信息学奥林匹克联赛初赛试题(包括答案)。

= 1; K := K +1 2% 第四届全国青少年信息学(计算机)奥林匹克分区联赛初赛 (初中组) 参考答案 一、选择填空:共 25 分 1.不属于操作系统的软件是 C 。 ...

1995-2012年普及组初赛试题(包括答案)

1995-2012年普及组初赛试题(包括答案)_IT认证_资格考试/认证_教育专区。第四届...第七届全国青少年信息学(计算机)奥林匹克分区联赛试题(普及组参考答案) 一、选择...

NOIP2012信息学奥林匹克竞赛初赛-模拟卷

2012 年全国青少年信息学奥林匹克联赛初赛模拟试题一.单项选择题 (共 10 题,每...NOIP2012普及组模拟试题... 12页 免费 1995-2012历年全国青少年... 119页 4...

2012年全国青少年信息学奥林匹克竞赛

为了进一步在安徽省青少年中普及信息技术教育, 提高信息技术教育水平, 选拔优秀选 手组队参加 2012全国青少年信息学奥林匹克竞赛,经研究决定举办 2012 年全省青少年...

2012少年信息学奥林匹克联赛初赛C试题

2012少年信息学奥林匹克联赛初赛C试题_学科竞赛_小学教育_教育专区。第十八届...2012年青少年信息学奥林... 6页 1下载券 1995-2012历年全国青少年... 119...

1995-2008 历届NOIP试题及详解

1995-2008 历届NOIP试题及详解_学科竞赛_高中教育_教育专区。对历届(1995-2008)...第二届全国青少年信息学(计算机)奥林匹克分区联赛 复赛参考答案(初中组)题号 1...

第一届(1995年)NOIP联赛普及组初赛试题(附答案)

第一届(1995年)NOIP联赛普及组初赛试题(答案)第一届(1995年)NOIP联赛普及组初赛试题(答案)隐藏>> NOI’95 “同创杯”全国青少年信息学(计算机)奥林匹克竞赛...

全国青少年信息学奥林匹克联赛

(National Olympiad in Informatics in Provinces,简称 NOIP)自 1995 年至今已...第 18 届全国青少年信息学奥林匹克联赛(CCF NOIP2012)初赛时间为 2012 年 10 ...
更多相关标签:
小学奥林匹克信息学 | 奥林匹克信息学竞赛 | 青少年信息学奥林匹克 | 奥林匹克信息学有用吗 | 奥林匹克信息学 | 奥林匹克信息学 江苏 | 奥林匹克信息学试题 | 中国化学奥林匹克初赛 |
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com