nbhkdz.com冰点文库

第十六届(2010年)全国青少年信息学奥林匹克联赛初赛试题---提高组---p


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

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

一. 单项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确答案。 ) 1、关于图灵机下面的说法哪个是正确的: A) 图灵机是世界上最早的电

子计算机。 B) C) 由于大量使用磁带操作,图灵机运行速度很慢。 图灵机只是一个理论上的计算模型。

D) 图灵机是英国人图灵发明的,在二战中为破译德军的密码发挥了重要作用。 2、关于 BIOS 下面的说法哪个是正确的: A) BIOS 是计算机基本输入输出系统软件的简称。 B) C) BIOS 里包含了键盘、鼠标、声卡、图形界面显器等常用输入输出设备的驱动程序。 BIOS 一般由操作系统厂商来开发完成。

D) BIOS 能提供各种文件拷贝、复制、删除以及目录维护等文件管理功能。 3、已知大写字母A的ASCII编码为65(十进制) ,则大写字母J的 十六进制 ASCII编码为: A) 48 B) 49 C) 50 D) 以上都不是

4、在字长为 16 位的系统环境下,一个 16 位带符号整数的二进制补码为 1111111111101101。其对应的十进 制整数应该是: A) 19 B) -19 C) 18 D) -18

5、一个包含 n 个分支结点(非叶结点)的非空满 k 叉树,k>=1,它的叶结点数目为: A) nk + 1 B) nk-1 C) (k+1)n-1 D. (k-1)n+1

6. 表达式 a*(b+c)-d 的后缀表达式是: A) abcd*+B) abc+*dC) abc*+dD) -+*abcd

7、 最优前缀编码, 也称 Huffman 编码。 这种编码组合的特点是对于较频繁使用的元素给与较短的唯一编码, 以提高通讯的效率。下面编码组合哪一组不是合法的前缀编码。 A)(00,01,10,11) B)(0,1,00,11) C)(0,10,110,111) D)(1,01,000,001)

8、快速排序平均情况和最坏情况下的算法时间复杂度分别为: A) 平均情况 O(nlog2n),最坏情况 O(n2) B) 平均情况 O(n), C) 平均情况 O(n), 最坏情况 O(n2) 最坏情况 O(nlog2n)

D) 平均情况 O(log2n), 最坏情况 O(n2) 9 、左图给出了一个加权无向图,从顶点 V0 开始用 prim 算法求最小生成树。则依 次加入最小生成树的顶点集合的顶点序列 为: A) V0, V1, V2, V3, V5, V4 B) V0, V1, V5, V4, V3, V3 C) V1, V2, V3, V0, V5, V4 D) V1, V2, V3, V0, V4, V5

10、全国信息学奥林匹克的官方网站为参与信息学竞赛的老师同学们提供相关的信息和资源,请问全国信 息学奥林匹克官方网站的网址是: A) http://www.noi.com/ C) http://www.noi.cn/ B) http://www.noi.org/ D) http://www.xinxixue.com/

二. 不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数不少于 1。多选或少选均 不得分) 。 1、关于 CPU 下面哪些说法是正确的: A) B) C) D) CPU 全称为中央处理器(或中央处理单元) 。 CPU 能直接运行机器语言。 CPU 最早是由 Intel 公司发明的。 同样主频下,32 位的 CPU 比 16 位的 CPU 运行速度快一倍。

2、关于计算机内存下面的说法哪些是正确的: A) 的。 B) C) D) 一般的个人计算机在同一时刻只能存/取一个特定的内存单元。 计算机内存严格说来包括主存(memory) 、高速缓存(cache)和寄存器(register)三个部分。 1MB 内存通常是指 1024*1024 字节大小的内存。 随机存储器(RAM)的意思是当程序运行时,每次具体分配给程序的内存位置是随机而不确定

3、关于操作系统下面说法哪些是正确的: A. B. C. D. 多任务操作系统专用于多核心或多个 CPU 架构的计算机系统的管理。 在操作系统的管理下,一个完整的程序在运行过程中可以被部分存放在内存中。 分时系统让多个用户可以共享一台主机的运算能力,为保证每个用户都得到及时的响应通常会采 用时间片轮转调度的策略。 为了方便上层应用程序的开发,操作系统都是免费开源的。

4、关于计算机网络,下面的说法哪些是正确的:

A) B) C) D)

网络协议之所以有很多层主要是由于新技术需要兼容过去老的实现方案。 新一代互联网使用的 IPv6 标准是 IPv5 标准的升级与补充。 TCP/IP 是互联网的基础协议簇,包含有 TCP 和 IP 等网络与传输层的通讯协议。 互联网上每一台入网主机通常都需要使用一个唯一的 IP 地址,否则就必须注册一个固定的域名 来标明其地址。

5、关于 HTML 下面哪些说法是正确的: A) B) C) D) HTML 全称超文本标记语言,实现了文本、图形、声音乃至视频信息的统一编码。 HTML 不单包含有网页内容信息的描述,同时也包含对网页格式信息的定义。 网页上的超链接只能指向外部的网络资源,本网站网页间的联系通过设置标签来实现。 点击网页上的超链接从本质上就是按照该链接所隐含的统一资源定位符(URL)请求网络资源或 网络服务。 6、若 3 个顶点的无权图 G 的邻接矩阵用数组存储为{{0,1,1},{1,0,1},{0,1,0}},假定在具体存 储中顶点依次为: v1,v2,v3 关于该图,下面的说法哪些是正确的: A) B) C) D) 该图是有向图。 该图是强连通的。 该图所有顶点的入度之和减所有顶点的出度之和等于 1。 从 v1 开始的深度优先遍历所经过的顶点序列与广度优先的顶点序列是相同的。

7、在带尾指针(链表指针 clist 指向尾结点)的非空循环单链表中每个结点都以 next 字段的指针指向下一 个节点。假定其中已经有 2 个以上的结点。下面哪些说法是正确的: A) 如果 p 指向一个待插入的新结点,在头部插入一个元素的语句序列为: p^.next:= clist^.next; clist^.next:= p; B) 如果 p 指向一个待插入的新结点,在尾部插入一个元素的语句序列为: p^.next:= clist; clist^.next:= p; C) 在头部删除一个结点的语句序列为: p:= clist^.next; clist^.next:= clist^.next^.next; dispose(p); D) 在尾部删除一个结点的语句序列为。 p:= clist; clist:= clist ^.next; dispose(p); 8、散列表的地址区间为 0-10,散列函数为 H(K)=K mod 11。采用开地址法的线性探查法处理冲突,并将关 键字序列 26,25,72,38,8,18,59 存储到散列表中,这些元素存入散列表的顺序并不确定。假定之 前散列表为空,则元素 59 存放在散列表中的可能地址有: A) 5 B) 7 C) 9 D) 10

9、 排序算法是稳定的意思是关键码相同的记录排序前后相对位置不发生改变, 下列哪些排序算法是稳定的: A) 插入排序 B) 基数排序 C) 归并排序 D) 冒泡排序

10、在参加 NOI 系列竞赛过程中,下面哪些行为是被严格禁止的: A) B) C) D) 携带书写工具,手表和不具有通讯功能的电子词典进入赛场。 在联机测试中通过手工计算出可能的答案并在程序里直接输出答案来获取分数。 通过互联网搜索取得解题思路。 在提交的程序中启动多个进程以提高程序的执行效率。

三.问题求解(共 2 题,每空 5 分,共计 10 分)

1.拓扑排序是指将有向无环图 G 中的所有顶点排成一个线性序列,使得图中任意一对顶点 u 和 v, 若<u,v> ∈E(G),则 u 在线性序列中出现在 v 之前,这样的线性序列成为拓扑序列。如下的有向无环图, 对其顶点做拓扑排序,则所有可能的拓扑序列的个数为 。

2

5 6

8

1

4 7 9

3

2.某个国家的钱币面值有 1, 7, 72, 73 共计四种,如果要用现金付清 10015 元的货物,假设买卖双方各 种钱币的数量无限且允许找零,那么交易过程中至少需要流通 张钱币。

四.阅读程序写结果(共 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. 输入:123 321 输出:_________

2.

var a, b: array[0..3] of integer; i, j, tmp: integer; begin for i := 0 to 3 do read(b[i]); for i := 0 to 3 do begin a[i] := 0; for j := 0 to i do begin inc(a[i], b[j]); inc(b[a[i] mod 4], a[j]); end; end; tmp := 1; for i := 0 to 3 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 7 输出:_______________ 3. const y = 2009; maxn = 50; var n, i, j, s: longint; c: array[0..maxn, 0..maxn] of longint; begin s := 0; read(n); c[0, 0] := 1;

for i := 1 to n do begin c[i, 0] := 1; for j := 1 to i - 1 do c[i, j] := c[i-1, j-1] + c[i-1, j]; c[i, i] := 1; end; for i := 0 to n do s := (s + c[n, i]) mod y; write(s); end.

输入:17 输出: 4. var n, m, i, j, k, p: integer; a, b: array[0..100] of integer; begin read(n, m); a[0] := n; i := 0; p := 0; k := 0; repeat for j := 0 to i - 1 do if a[i] = a[j] then begin p := 1; k := j; break; end; if p <> 0 then break; b[i] := a[i] div m; a[i+1] := (a[i] mod m) * 10; inc(i); until a[i] = 0; write(b[0], '.'); for j := 1 to k - 1 do write(b[j]); if p <> 0 then write('(');

for j := k to i - 1 do write(b[j]); if p <> 0 then write(')'); writeln; end.

输入:5 13 输出:_________

五.完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 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 := begin if tmp + a[i] > ans then begin ans := tmp + a[i]; len := i - beg; end else if ( if tmp + a[i] begin beg := tmp := 0; end else ⑤ ; ④ ; ② ③ ) and (i - beg > len) then then len := i - beg; ① ; for i := 1 to n do

end; writeln(ans, ' ', len); end.

2. (寻找等差数列) 有一些长度相等的等差数列(数列中每个数都为 0~59 的整数) ,设长度均为 L, 将等差数列中的所有数打乱顺序放在一起。现在给你这些打乱后的数,问原先,L 最大可能为多大?先读 入一个数 n(1<=n<=60) ,再读入 n 个数,代表打乱后的数。输出等差数列最大可能长度 L。 var hash: array[0..60] of integer; n, x, ans, maxnum, i: integer; function work(now: integer): boolean; var ok: boolean; first, second, delta, i: integer; begin while (( inc(now); if now > maxnum then begin work := true; exit; end; first := now; for second := first to maxnum do if hash[second] > 0 then begin delta := break; if delta = 0 then ok := ( else begin ok := true; for i := 0 to ans - 1 do ok := end; if ok then begin for i := 0 to ans - 1 do dec(hash[first+delta*i]); ⑤ and (hash[first+delta*i]>0); ④ ) ② ; ③ > maxnum then ① ) and (hash[now]=0)) do

if first + delta *

if work(first) then begin work := true; exit; end; for i := 0 to ans - 1 do inc(hash[first+delta*i]); end; end; work := false; end; begin fillchar(hash, sizeof(hash), 0); read(n); maxnum := 0; for i := 1 to n do begin read(x); inc(hash[x]); if x > maxnum then maxnum := x; end; for ans := n downto 1 do if (n mod ans = 0) and begin writeln(ans); break; end; end. ⑥ then

第十四届全国青少年信息学奥林匹克联赛初赛试题
( 提高组 Pascal 语言 二小时完成 ) ●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●
一、单项选择题(共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确答案)。

1.在以下各项中,( A.Solaris B.Linux

)不是操作系统软件。 C.Sybase D.Windows Vista E.Symbian

2.微型计算机中,控制器的基本功能是( A.控制机器的各个部件协调工作 D.获取外部信息

)。

B.实现算数运算与逻辑运算 C.存储各种控制信息 E.存放程序和数据

3.设字符串 S=“Olympic”,S 的非空子串的数目是( A.29 B.28 C.16

)。 D.17 E.7

4.完全二叉树有 2*N-1 的结点,则它的叶子结点数目是( A.N-1 B.2*N C .N

)。 D.2 -1
N

E.N/2

5.将数组{8,23,4,16,77,-5,53,100}中元素从大到小按顺序排序,每次可以交换任意两个元素, 最少要交换( A.4 )次。 B.5 C.6 D.7 E.8

6.设栈 S 的初始状态为空,元素 a,b,c,d,e,f 依次入栈,出栈顺序为 b,d,c,f,e,a 那么栈容量 至少应该是( A.6 )。 B.5 C.4 D.3 E.2

7.与十进制数 28.5625 相等的四进制数是( A.123.21 B.131.22

) D.130.21 E.130.20

C.130.22

8.递归过程和函数调用时,处理参数和返回地址,通常使用一种称为( A.队列 B.多维数组 C.线性表 D.链表

)的数据结构。 E.栈

9.TCP/IP 是一组构成互联网基础的网络协议,字面上包括两组协议:传输控制协议(TCP)和网际互联 协议(IP)。TCP/IP 协议把 Internet 网络系统描述成具有 4 个层次功能的网络模型,其中提供源节点和目 的节点之间的信息传输服务,包括寻址和路由器选择等功能的是( A.链路层 B.网络层 C.传输层 )。 E.会话层

D.应用层

10.对有序数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,等概率情况下,查找成功的平均查找长度 (平均比较次数)是( A.35/11 B.34/11 )。 C.33/11 D.32/11 E.34/10

二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数大于或等于 1。多选或少选 均不得分)。 11.下列关于图灵的说法正确的有( )。

A.图灵奖是美国计算机协会与 1966 年设立的,专门鼓励那些对计算机做出重要贡献的个人

B.图灵奖有“计算机界诺贝尔奖”之称。 C.迄今为止,还没有华裔计算机科学家获此殊荣。 D.图灵奖的名称取自计算机科学先驱、英国科学家阿兰·图灵。

12.计算机在工作过程中,若突然停电,( A.硬盘 B.CPU C.ROM

)中不会丢失信息不会丢失。 D.RAM

13.若 A=True,B=False,C=True,D=False,以下逻辑运算表达式真的有( A.(A∧B)V(C∧DV?A) C.(BVCVD)VD∧A B.((?A∧B)VC)∧?B D.A∧(DV?C)∧B

)。

14.Web2.0 是近年来互联网热门概念之一,其核心是互动与分享。下列网站中,( 2.0 的应用。 A.Sina B.Flickr C.Yahoo D.Google

)是典型的 Web

15.(2008)10+ A.(833)16

(5B)16 的结果是()。 B.(2099)10 C.(4063)8 D.(100001100011)2

16.二叉树 T,已知其先序遍历是 1 2 4 3 5 7 6(数字为节点编号,以下同),后序遍历是 4 2 7 5 6 3 1,则该二叉树的中根遍历是( A.4 2 1 7 5 3 6 ) C.4 2 1 7 5 6 3 D.2 4 1 5 7 3 6

B.2 4 1 7 5 3 6

17.面向对象的程序设计(Object-Oriented Programming)是一种程序设计的方法论,它将对象作为程序设 计的基本单元,将数据和程序封装在对象中,以提高软件的重用性、灵活性、和扩展性。下面关于面向对 象的程序设计说法中正确的是( )。

A.面向对象的程序设计方法通常采用自顶向下的设计方法进行设计。 B.面向对象的程序设计方法具有继承性(inheritance)、封装性(encapsulation)、多态性(polymorphis m)等几大特点。 C.支持面向对象特性称为面向对象的编程语言,目前较为流行的有 C++,JAVA,C#等。 D.面向对象的程序设计的雏形来自于 Simula 语言,后来在 SmallTalk 语言的完善和标准化的过程中得到 更多的扩展和对以前的思想的重新注解。至今,SmallTalk 语言仍然被视为面向对象的基础。

18.设 T 是一棵有 n 个定点的树,以下说法正确的是( A.T 是联通的,无环的 C.T 是无环的,有 n-1 条边

)。

B.T 是联通的,有 n-1 条边 D.以上都不对

19.NOIP 竞赛推荐使用的语言环境有( A.Dev-C++ B.Visual C++

)。 C.Free Pascal D.Lazarus

20.在下列防火墙(Firewall)的说法中,正确的有(

)。

A.防火墙是一项协助确保信息安全的设备,其会依照特定的规则,允许或是限制数据通过 B.防火墙可能是一台专属硬件或是安装在一般硬件上的一套软件 C.网络层防火墙可以视为一种 IP 数据包过滤器,只允许符合特定规定的数据包通过,其余的一概禁止穿 越防火墙 D.应用层防火墙是在 TCP/IP 的“应用层”上工作,可以拦截进出某应用程序的所有数据包

三、问题求解(共 2 题,每题 5 分,共计 10 分) 1.有 6 个城市,任何两个城市之间有一条道路连接,6 个城市之间两两之间的距离如下表表示,则城市 1 到城市 6 的最短距离为____________。 城市 1 城市 1 城市 2 城市 3 城市 4 城市 5 城市 6 0 2 3 1 12 15 城市 2 2 0 2 5 3 12 城市 3 3 2 0 3 6 5 城市 4 1 5 3 0 7 9 城市 5 12 3 6 7 0 2 城市 6 15 12 5 9 2 0

2.书架上有 21 本书,编号从 1 到 21 从中选 4 本,其中每两本的编号都不相邻的选法一共有________ ___________种。

四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分)。 1.var i,a,b,c,d:integer; f:array[0..3] of integer; begin for i:=0 to 3 do read(f[i]); a:=f[0]+f[1]+f[2]+f[3]; a:=a div f[0]; b:=f[0]+f[2]+f[3]; b:=b div a; c:=(b*f[1]+a) div f[2]; d:=f[(b div c) mod 4]; if (f[(a+b+c+d) mod 4]>f[2]) then begin a:=a+b;

writeln(a) end else begin c:=c+d; writeln(c); end; end. 输入: 9 19 29 39

输出:_______________________________

2.var a,b,c:integer; Procedure begin if a>b then else end; begin readln(a,b,c); foo(a,b,c); end. 输入:2 1 3 输出:_________________ foo(c,a,b) foo(a,b,c:integer);

writeln(a,',',b,',',c)

3.procedure f(a,b,c:integer); begin write(a,b,c,'/'); if (a=3)and(b=2)and(c=1) then if (b<c) then else if a<b then if a<c then f(c,a,b) else f(b,c,a); end; var a,b,c:integer; begin readln(a,b,c); f(a,b,c); end. f(a,c,b) exit;

输入:1 3 2 输出:____________________

4.var

s:string; i,j,len,k:integer;

begin readln(s); len:=length(s); for i:=1 to len do if (ord(s[i])>=ord('A')) and (ord(s[i])<=ord('Z')) then for i:=1 to len do if (ord(s[i])<ord('X')) then else s:=chr(ord(s[i])-23); write(s); write('/'); for j:=1 to 3 do begin i:=1; while i<=len-j do begin s[i]:=s[i+j]; i:=i+j; end; end; writeln(s); end. 输入:ABCDEFGuvwxyz 输出:________________________________ s:=chr(ord(s[i])+3) s:=chr(ord(s[i])-ord('A')+ord('a'));

五.完善程序(前 6 空,每空 3 分,后 5 空,每空 2 分,共 28 分)。 1.(找第 k 大的数)给定一个长度为 1000000 的无序正整数序列,以及另一个数 n(1<=n<=1000000), 接下来以类似快速排序的方法找到序列中第 n 大的数(关于第 n 大的数:例如序列{1,2,3,4,5,6}中 第 3 大的数是 4) Var a:array[1..1000000] of integer; n,m,ans:integer; procedure swap(var a,b:integer); var t:integer; begin

if (a<>b) then begin t:=a; a:=b; b:=t; end; end; Function FindKth(left,right,n:integer):integer; Var tmp,value,i,j:integer; begin if left=right then exit(left); tmp:=random(right-left)+left; swap(a[tmp],a[left]); value:=____①_____ i:=left; j:=right;

while i<j do begin while (i<j) and (________②______) do dec(j); if i<j then begin a[i]:=a[j];inc(i); end else break; while (i<j) and (___③___) do inc(i); if i<j then begin a[j]:=a[i]; dec(j); end else break; end; ____④_____ if i<n then begin inc(i); exit(FindKth(_____⑤_____));end; if i>n then begin dec(j); exit(______⑥________);end; exit(i); end;

var i:integer; begin randomize; ans:=-1; m:=5; for i:=1 to m do read(a[i]); read(n); ans:=FindKth(1,m,n);

writeln(a[ans]); end.

2.(矩阵中的数字)有一个 n*n(1≤n≤5000)的矩阵 a,对于 1≤i<n, 1≤j≤n, a[i,j]<a[i+1,j]

a[j,i]<a[j,i

+1]。即矩阵中左右相邻的两个元素,右边的元素一定比左边的大。上下相邻的两个元素,下面的元素一定 比上面的大。 给定矩阵 a 中的一个数字 k, 找出 k 所在的行列 (注意: 输入数据保证矩阵中的数各不相同) 。 var n,k,answerx,answery:integer; a:array[1..5000,1..5000] of integer; Procedure FindKPosition; Var I,j:integer; Begin i:=n; j:=n; while j>0 do begin if a[n,j]<k then break; dec(j); end; ______①_________ while a[i,j]<>k do begin while (___②_____) and (i>1) do dec(i); while (___③_____) and (j<=n) do inc(j); end; _______④________ _______⑤________ end; var i,j:integer; begin read(n); for i:=1 to n do for j:=1 to n do read(a[i,j]); read(k); FindKPosition; writeln(answerx,' ',answery); end.

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

一、 单项选择题 (共 10 题, 每题 1.5 分, 共计 15 分。 每题有且仅有一个正确答案.) 。 1. 在以下各项中。 ( )不是 CPU 的组成部分。 A. 控制器 B. 运算器 C. 寄存器 D. 主板 E. 算术逻辑单元(ALU)

2. 在关系数据库中, 存放在数据库中的数据的逻辑结构以( A. 二叉树 B. 多叉树 C. 哈希表 D. B+树 3.在下列各项中,只有( A. Byte B. KB

)为主。 E. 二维表

)不是计算机存储容量的常用单位。 C. MB D. UB E. TB

4.ASCII 码的含义是( ) 。 A. 二—十进制转换码 B. 美国信息交换标准代码 C. 数字的二进制数码 D. 计算机可处理字符的唯一编码 E. 常用字符的二进制编码 5.在 Pascal 语言中,表达式 (23 or 2 xor 5)的值是( A. 18 B. 1 C.23 D.32 ) E.24

6.在 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) E. not ((a=0) or (b=0) or (c=0)) 7. 地面上有标号为 A、 B、 C 的 3 根细柱, 在 A 柱上放有 10 个直径相同中间有孔的圆盘, 从 上到下次依次编号为 1, 2, 3, ??,将 A 柱上的部分盘子经过 B 柱移入 C 柱, 也可以在 B 柱上暂存。如果 B 柱上的操作记录为: “进,进,出,进,进,出,出,进,进,出,进, 出,出” 。那么, 在 C 柱上, 从下到上的盘子的编号为( ) 。 A. 2 4 3 6 5 7 B. 2 4 1 2 5 7 C. 2 4 3 1 7 6 D. 2 4 3 6 7 5 E. 2 1 4 3 7 5 8. 与十进制数 17.5625 相对应的 8 进制数是( ) 。 A. 21.5625 B. 21.44 D. 21.731 E. 前 4 个答案都不对

C. 21.73

9. 欧拉图 G 是指可以构成一个闭回路的图,且图 G 的每一条边恰好在这个闭回路上出现一 次(即一笔画成) 。在以下各个描述中, 不一定是欧拉图的是: ( ) 。 A. 图 G 中没有度为奇数的顶点 B. 包括欧拉环游的图(欧拉环游是指通过图中每边恰好一次的闭路径) C. 包括欧拉闭迹的图(欧拉迹是指通过途中每边恰好一次的路径) D. 存在一条回路, 通过每个顶点恰好一次 E. 本身为闭迹的图 10. 一个无法靠自身的控制终止的循环称为“死循环” ,例如在 C 语言程序中,语句 “while(1)printf("*"); ”就是一个死循环,运行它将无休止地打印*号。下面关于死循环 的说法中, 只有( )是正确的。

A. 不存在一种算法, 对任何一个程序及相应的输入数据, 都可以判断是否会出现死循环, 因而, 任何编译系统都不做死循环检查 B. 有些编译系统可以检测出死循环 C. 死循环属于语法错误, 既然编译系统能检查各种语法错误, 当然也能检查出死循环 D. 死循环与多进程中出现的“死锁”差不多,而死锁是可以检测的,因而,死循环也是可 以检测的 E. 对于死循环,只能等到发生时做现场处理, 没有什么更积极的手段 二、 不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数大于 或等于 1。多选或少选均不得分) 。 11. 设 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 12. 命题“P→Q”可读做 P 蕴含 Q, 其中 P、Q 是两个独立的命题. 只有当命题 P 成立而命 题 Q 不成立时, 命题"P→Q"的值为 false, 其它情况均为 true. 与命题"P→Q"等价的逻辑 关系式是( ) 。 A. ﹁ P∨Q B. P∧Q C. ﹁ (P∨Q) D. ﹁(﹁Q∧ P ) 13. (2070)16+(34)8 的结果是( A. (8332)10 C. (100000000110)2 D. ) 。 B. (208C)16 (20214)8

14. 已知 7 个节点的二叉树的先根遍历是 1 2 4 5 6 3 7(数字为结点的编号,以下同), 后 根遍历是 4 6 5 2 7 3 1, 则该二叉树的可能的中根遍历是( ) A. 4 2 6 5 1 7 3 B. 4 2 5 6 1 3 7 C. 4 2 3 1 5 4 7 D. 4 2 5 6 1 7 3 15. 冗余数据是指可以由其他数据导出的数据, 例如, 数据库中已存放了学生的数学、 语文、 和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看做冗余数据。冗余数据往 往会造成数据的不一致, 例如上面 4 个数据如果都是输入的, 由于操作错误使总分不等于三 科成绩之和,就会产生矛盾。下面关于冗余数据的说法中, 正确的是( ) 。 A. 应该在数据库中消除一切冗余数据 B. 与用高级语言编写的数据处理系统相比, 用关系数据库编写的系统更容易消除冗余数据 C. 为了提高查询效率, 在数据库中可以适当保留一些冗余数据, 但更新时要做相容性检 验 D. 做相容性检验会降低效率, 可以不理睬数据库中的冗余数据 16.在下列各软件中,属于 NOIP 竞赛(复赛)推荐使用的语言环境有( A. gcc B. g++ C. Turbo C D. free pascal 17. 以下断电之后将仍能保存数据的有( ) 。 ) 。

A. 硬盘

B. ROM

C. 显存

D. RAM

18. 在下列关于计算机语言的说法中,正确的有( ) 。 A. 高级语言比汇编语言更高级, 是因为它的程序的运行效率更高 B. 随着 Pascal、C 等高级语言的出现, 机器语言和汇编语言已经退出了历史舞台 C. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上 D. C 是一种面向过程的高级计算机语言 19. 在下列关于算法复杂性的说法中, 正确的有( ) 。 A. 算法的时间复杂度,是指它在某台计算机上具体实现时的运行时间 B. 算法的时间复杂度, 是指对于该算法的一种或几种主要的运算, 运算的次数与问题的规 模之间的函数关系 C. 一个问题如果是 NPC 类的, 就意味着在解决该问题时, 不存在一个具有多项式时间复 杂度的算法. 但这一点还没有得到理论上证实,也没有被否定 D. 一个问题如果是 NP 类的,与 C 有相同的结论 20. 近 20 年来, 许多计算机专家都大力推崇递归算法, 认为它是解决较复杂问题的强有力 的工具. 在下列关于递归的说法中, 正确的是( ) 。 A. 在 1977 年前后形成标准的计算机高级语言"FORTRAN77"禁止在程序使用递归, 原因之一 是该方法可能会占用更多的内存空间. B. 和非递归算法相比, 解决同一个问题, 递归算法一般运行得更快一些 C. 对于较复杂的问题, 用递归方式编程往往比非递归方式更容易一些 D. 对于已定义好的标准数学函数 sin(x), 应用程序中的语句“y=sin(sin(x));”就是一 种递归调用 三.问题求解(共 2 题,每题 5 分,共计 10 分) 1.给定 n 个有标号的球,标号依次为 1,2,?,n。将这 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=7,r=4 时,S(7,4)= 。 2.N 个人在操场里围成一圈,将这 N 个人按顺时针方向从 1 到 N 编号,然后从第一个人起, 每隔一个人让下一个人离开操场,显然,第一轮过后,具有偶数编号的人都离开了操场。依 次做下去,直到操场只剩下一个人,记这个人的编号为 J(N),例如,J(5)=3,J(10)=5,等 等。 m m 则 J(400)= 。 (提示:对 N=2 +r 进行分析,其中 0≤r<2 ) 。 四.阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. program s401; var p,q:array[0..5] of integer; i,x,y:integer; begin y:=20; for i:=0 to 4 do read(p[i]);

readln; q[0]:=(p[0]+p[1])+(p[2]+p[3]+p[4]) div 7; q[1]:=p[0]+p[1] div ((p[2]+p[3]) div p[4]); q[2]:=p[0]*p[1] div p[2]; q[3]:=q[0]*q[1]; q[4]:=q[1]+q[2]+q[3]; x:=(q[0]+q[4]+2)-p[(q[3]+3) mod 4]; if (x>10) then y:=y+(q[1]*100-q[3]) div (p[p[4] mod 3]*5) else y:=y+20+(q[2]*100-q[3]) div (p[p[4] mod 3]*5); writeln(x,',',y); end. /*注:本例中,给定的输入数据可以避免分母为 0 或下标越界。*/ 输入:6 6 5 5 3 输出: 2. program s402; var a,b:integer; 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^); write('No.1:',a,',',b,' '); fun(a,b); writeln('No.2:',a,',',b); end. 输出: 3. program S403; 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[i]:=0; n2:=round(sqrt(n)); for i:=2 to n2 do if(a1[i]=0) then

begin 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[i]=0) then begin write(i:4); inc(t); if(t mod 10=0) then writeln; end; writeln; end. 输出:

4. program S404; const n=12; ch2:array[0..12] of char =('q','A','S','O','R','T','E','X','A','M','P','L','E'); var k:integer; ch:array[0..12] of char; procedure shift(k,n:integer); var v:char; j:integer; begin v:=ch[k]; j:=k+k; while (j<=n) do begin if (j<n) and (ord(ch[j])<ord(ch[j+1])) then inc(j); if (ord(v)<ord(ch[j])) then begin ch[j div 2]:=ch[j]; j:=j*2; end else exit; ch[j div 2]:=v; end; end; procedure hpsrt; var k:integer; tmp:char; begin for k:=n div 2 downto 1 do shift(k,n); write('No.1: '); for k:=1 to n do write(ch[k]);

writeln; for k:=n downto 1 do begin tmp:=ch[1]; ch[1]:=ch[k]; ch[k]:=tmp; shift(1,k-1); end; end; begin for k:=0 to n do ch[k]:=ch2[k]; hpsrt; write('No.2: '); for k:=1 to n do write(ch[k]); writeln; end. 输出:

五.完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) 1.(格雷码 Gray Code) Gray Code 是一种二进制编码,编码顺序与相应的十进制数的大小不一致。其特点是,对于 两个相邻的十进制数,对应的两个格雷码只有一个二进制位不同。另外,最大数与最小数间 也仅有一个二进制位不同,以 4 位二进制数为例,编码如下:

十进制数 格雷码 0 0000 1 0001 2 0011 3 0010 4 0110 5 0111 6 0101 7 0100

十进制数 格雷码 8 1100 9 1101 10 1111 11 1110 12 1010 13 1011 14 1001 15 1000

如果把每个二进制的位看做一个开关, 则将一个数变为相邻的另一个数, 只须改动一个开关。 因此,格雷码广泛用于信号处理、数-模转换等领域。 n 下面程序的任务是:由键盘输入二进制的位数 n(n<16),再输入一个十进制数 m(0≤m<2 ), 然后输出对应于 m 的格雷码(共 n 位,用数组 gr[ ]存放) program s501; var bound,m,n,i,j,b,p:integer; gr:array[0..14]of integer; begin bound:=1; writeln('input n,m'); readln(n,m); for i:=1 to n do bound:=[ ① ]; if (m<0)or(m>=bound) then

begin writeln('Data error!'); [ ② ]; end; b:=1; for i:=1 to n do begin p:=0; b:=b*2; for[ ③ ] to m do if ([ ④ ] ) then p:=1-p; gr[i]:=p; end; for i:=n[ ⑤ ] do write(gr[i]); writeln; end. 2. (连续邮资问题) 某国发行了 n 种不同面值的邮票, 并规定每封信上最多允许贴 m 张邮票。 在这些约束下, 为了能贴出{1, 2, 3, ?, maxvalue}连续整数集合的所有邮资, 并使 maxvalue 的值最大,应该如何设计各邮票的面值?例如,当 n=5 和 m=4 时,面值设计为(1,3,11, 15,32) ,可使 maxvalue 达到最大值 70(或者说,用这些面值的 1 至 4 张邮票可以表示不超 过 70 的所有邮资,但无法表示邮资 71) 。而用其他面值的 1 至 4 张邮票如果可以表示不超 过 k 的所有邮资,必有 k≤70) 下面是用递归回溯求解连续邮资问题的程序。数组 x[1:n]表示 n 种不同的邮票面值, 并约定各元素按下标是严格递增的。数组 bestx[1:n]存放使 maxvalue 达到最大值的邮票 面值(最优解) ,数组 y[maxl]用于记录当前已选定的邮票面值 x[1:i]能贴出的各种邮资所 需的最少邮票张数。请将程序补充完整。 program S502; const NN=20; maxint=30000; maxl=500; var bestx,x:array [0..NN] of integer; y:array [0..maxl] of integer; j,n,m,maxvalue:integer; procedure result; var j:integer; begin writeln('max=',maxvalue); for j:=1 to n do write(bestx[j]:4); writeln; end; procedure backtrace(i,r:integer); var j,k:integer;

z: array[0..maxl] of integer; begin for j:=0 to[ ① ]do if (y[j]<m) then for k:=1 to m-y[j] do if (y[j]+k<=y[ ② ]) then y[ ③ ]:=y[j]+k; while (y[r]<maxint) do inc(r); if (i>n) then begin if (r-1>maxvalue) then begin maxvalue:=[ ④ ] ; for j:=1 to n do bestx[j]:=x[j]; end; exit; end; for k:=0 to maxl do z[k]:=y[k]; for j:=[ ⑤ ] to r do begin x[i]:=j; [ ⑥ ]; for k:=0 to maxl do y[k]:=z[k]; end; end; begin maxvalue:=0; writeln('input n,m:'); readln(n,m); for j:=1 to maxl do y[j]:=maxint; y[0]:=0; x[0]:=0; x[1]:=1; backtrace(2,1); result; end.

答案
CCF NOIP2011 提高组(Pascal 语言)参考答案与评分标准 一、单项选择题(共 10 题,每题 1.5 分,共计 15 分) 1 B 2 B 3 A 4 D 5 B 6 A 7 C 8 D 9 B 10 A

二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分,多选或少选均不得分) 1 CD 2 ABCD 3 AB 4 BC 5 BC 6 ABD 7 CD 8 A 9 BCD 10 ABC

三、问题求解(共 2 题,每题 5 分,共计 10 分) 1.9 2.4

四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1.3 2.1 2 5 13 34 3.150 4.57344 五、完善程序(第 1 题,每空 2 分,第 2 题,每空 3 分,共计 28 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不 一定上报科学委员会审查) 1.① ans.num[i + j - 1] ② ans.num[i] := ans.num[i] mod 10; ③ ans.num[i] + a.num[i] + b.num[i]; ④ ans.num[i] mod 2 (或 ans.num[i] and 1) ⑤ inc(ans.len) (或 ans.len := ans.len + 1) ⑥ a.len < b.len ⑦ ord('0')(或 48) ⑧ times(middle, middle), target 2.① inc(num) (或 num := num + 1) ② j := i ③ solve(left, j - 1, deep + 1) ④ solve(j + 1, right, deep + 1) NOIP2010(第十六届)初赛提高组(C 语言、PASCAL 语言)参考答案与评分标准 一、单项选择题(共 10 题,每题 1.5 分,共计 15 分) 1 2 3 4 5 6 7 8 9 10 C A A D B D C B C B 二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分,多选或少选均不得分) 1 2 3 4 5 6 7 8 9 10 ACD AD ABD AC B B D D BCD ABC 三、问题求解(共 3 题,每题 5 分,共计 15 分)

1.yyxy xx yyxy xyx xx xyx 2.12 3.18 四、阅读程序写结果(共 4 题,每题 7 分,共计 28 分) 1.16 2.1 2 3 5 6 7 9 10 14 3. 4 4.1 6 9 5 4 8 3 2 7 五、完善程序(第 1 空 2 分,其余 10 空,每空 2.5 分,共计 27 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证, 不一定上报科学委员会审查) 1.① 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 可用 true 代替,LEFT_TO_RIGHT 可用 true 代替,RIGHT_TO_LEFT 可用 false 代替。 2.① opt[k] ② home[r] := k ③ j := i + i(或 j := 2 * i 或 j := i * 2) ④ swap(i, j)(或 swap(j, i)) ⑤ value[i] + heap[1](或 heap[1] + value[i]) ⑥ i-m NOIP2009(第十五届)初赛提高组(C 语言、PASCAL 语言)参考答案与评分标准
一、单项选择题: (每题 1.5 分) 1. C 2. A 3. D 4. B 5. D 6. B 7. B 8. A 9. A 10. C 二、 不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数大于或等于 1。多选或少选 均不得分) 。 1. AB 2. BD 3. BC 4. C 5. BD 6. ABD 7. AC 8. ABC 9. ABCD 10. ACD 三、问题求解: (共 2 题,每空 5 分,共计 10 分) 1.432 2.35 四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. 3 2. 5850 3. 487 (杨辉三角) 4. 0.(384615)(分数变小数) 五.完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不一定上报科学 委员会审查) 1. ① 0 ② tmp+a[i]=ans 或者 a[i]+tmp=ans 或者 ans=a[i]+tmp 等

③ <0 ④ i ⑤ inc(tmp, a[i])或者 tmp := tmp+a[i] 2. ① now<=maxnum 或者 not(now>maxnum) ② first-second ③ (ans-1) ④ hash[first]>=ans 或者 hash[second]>=ans 或者 hash[first+delta]>=ans ⑤ ok ⑥ work(0)

NOIP2008 年(第十四届)提高组(Pascal 语言)参考答案 一、单项选择题:(每题 1.5 分) 1. C 2. A 3. B 4. C 5. B 6. D 7. D 8. E 9. B 10. C 二、 不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数大于或等 于 1。多选或少选均不得分)。 11. ABD 12. AC 13. BC 14. B 15. ABC 16. ABD 17. BCD 18. ABC 19. ACD 20. ABCD 三、问题求解:(共 2 题,每题 5 分,共计 10 分) 1.7 2.3060 四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. 23 (信心题) 2. 1,3,2 (简单递归) 3. 132/213/231/312/321/ (全排列) 4. defghijxyzabc/hfizxjaybcccc (字符串替换) 五.完善程序 (前 6 空,每空 3 分,后 5 空,每空 2 分,共 28 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不 一定上报科学委员会审查) 1. ① a[left] ② a[j] < value (或 a[j] <= value) ③ a[i] > value (或 a[i] >= value) ④ a[i] := value; ⑤ i,right,n ⑥ FindKth(left, i, n) 2. ② ③ ④ ⑤ ① inc(j); (或者 j := j+1;) a[i,j] > k a[i,j] < k answerx := i; answery := j;

NOIP2007 年(第十三届)提高组(Pascal 语言)参考答案 一、单项选择题 1. D 2. E 3. D 4. B 5. A 6. B 7. D 8. B 9. D 10. A 二、 不定项选择题 11. ABC 12. AD 13. ABD 14. ABD 15. BC 16. ABD 17. AB 18. CD 19. BC 20. AC 三、问题求解 1.350 2.289 四、阅读程序写结果 1 129,43 2 No.1:3,6 No.2:3,6 3 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 4 No.1: XTORSEAAMPLE No.2: AAEELMOPRSTX 五、完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证, 不一定上报科学委员会审查) 1 ① bound*2 ② exit ③ j:=0 ④ (j mod b-(b div 2))=0 ⑤ downto 1 2 ① x[i-2]*(m-1) ② j+x[i-1]*k ③ j+x[i-1]*k (同 2) ④ r-1 ⑤ x[i-1]+1 ⑥ backtrace(i+1,r)


CCF NOIP2010全国青少年信息学奥林匹克联赛初赛试题

第十六届全国青少年信息学奥林匹克联赛初赛试题试题及答案 NOIP2010(Pascal 提高组) 一、单项选择题 1.与 16 进制数 A1.2 等值的 10 进制数是 () A.101.2...

(NOI)2010第十六届全国青少年信息学奥林匹克联赛初赛试题

(NOI)2010第十六届全国青少年信息学奥林匹克联赛初赛试题_学科竞赛_初中教育_教育专区。NOIP2010(Pascal 提高组)一、单项选择题 1.与 16 进制数 A1.2 等值的 ...

第十六届全国青少年信息学奥林匹克联赛初赛试题及答案(Pascal提高组)

NOIP2010 初赛 提高组 Pascal 7 第十六届全国青少年信息学奥林匹克联赛初赛答案一、单项选择题(共 10 题,每题 1.5 分,共计 15 分) 1 2 3 4 5 6 7 8 ...

第十六届全国青少年信息学奥林匹克联赛初赛试题_提高组(c语言)

第十六届全国青少年信息学奥林匹克联赛初赛试题_提高组(c语言)_其它考试_资格考试/认证_教育专区。今年高中信息技术竞赛(NOI信息学奥林匹克竞赛提高组C语言试题)第...

第十六届_NOIP2010全国青少年信息学奥林匹克联赛初赛试题(Pascal提高组)

第十六届_NOIP2010全国青少年信息学奥林匹克联赛初赛试题(Pascal提高组) 第十六届_NOIP2010全国青少年信息学奥林匹克联赛初赛试题(Pascal提高组)第十六届_NOIP2010全...

第十五届(2009年)全国青少年信息学奥林匹克联赛初赛---提高组--p

第十五届(2009年)全国青少年信息学奥林匹克联赛初赛---提高组--p_学科竞赛_高中教育_教育专区。第十六届(2010 年)全国青少年信息学奥林匹克联赛初赛 试题( 提高组...

Noip2010提高组初赛试题及详细解析(C语言)

Noip2010提高组初赛试题及详细解析(C语言)_建筑/土木_工程科技_专业资料。第十六届全国青少年信息学奥林匹克联赛初赛试题 ( 提高组 C 语言二小时完成) ●● 全部...

全国青少年信息学奥林匹克联赛初赛试题2009-2015

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

第11届全国青少年信息学奥林匹克联赛初赛试题(普P)附答案

信​息​学​奥​林​匹​克​真​题​及​辅​导第十一届全国青少年信息学奥林匹克联赛初赛试题 ( 普及组 pascal 语言 二小时完成 ) ●●...