2004年NOIP提高组初赛真题
- 一、 单项选择题 (共10题,每题1.5分,共计15分。每题有且仅有一个正确答案.)。
-
- 1. 设全集I = {a, b, c, d, e, f, g},集合A = {a, b, c},B = {b, d, e},C = {e, f, g},那么集合(A-B)∪(~C∩B) 为( )。
-
- A. {a, b, c, d}
- B. {a, b, d, e}
- C. {b, d, e}
- D. {b, c, d, e}
- E. {d, f, g}
-
- 2. 由3个a,5个b和2个c构成的所有字符串中,包含子串“abc”的共有( )个。
-
- A. 40320
- B. 39600
- C. 840
- D. 780
- E. 60
-
- 3. 某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入记录为:“进,出,进,进,出,进,进,进,出,出,进,出”。假设车辆入站的顺序为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
-
- 4. 满二叉树的叶结点个数为N,则它的结点总数为( )。
-
- A. N
- B. 2 * N
- C. 2 * N – 1
- D. 2 * N + 1
- E. 2N – 1
-
- 5. 二叉树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
-
- 6. 十进制数100.625等值于二进制数( )。
-
- A. 1001100.101
- B. 1100100.101
- C. 1100100.011
- D. 1001100.11
- E. 1001100.01
-
- 7. 下面哪个部件对于个人桌面电脑的正常运行不是必需的( )。
-
- A. CPU
- B. 图形卡(显卡)
- C. 光驱
- D. 主板
- E. 内存
-
- 8. 下列哪个网络上常用的名字缩写是错误的( )。
-
- 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)
-
- 9. 用静电吸附墨粉后转移到纸张上,是哪种输出设备的工作方式( )。
-
- A. 针式打印机
- B. 喷墨打印机
- C. 激光打印机
- D. 笔式绘图仪
- E. 喷墨绘图仪
-
- 10. 一台计算机如果要利用电话线上网,就必须配置能够对数字信号和模拟信号进行相互转换的设备,这种设备是( )。
-
- A. 调制解调器
- B. 路由器
- C. 网卡
- D. 网关
- E. 网桥
- 二、 不定项选择题 (共10题,每题1.5分,共计15分。多选或少选均不得分)。
-
- 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
- E. (2036)10
-
- 14. 下列哪个(些)不是数据库软件的名称( )。
-
- A. MySQL
- B. SQL Server
- C. Oracle
- D. Outlook
- E. Foxpro
-
- 15. 下列哪个(些)不是计算机的存储设备( )。
-
- A. 文件管理器
- B. 内存
- C. 显卡
- D. 硬盘
- E. U盘
-
- 16. 下列哪个(些)软件属于操作系统软件( )。
-
- A. Microsoft Word
- B. Windows XP
- C. Foxmail
- 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.
某大学计算机专业的必修课及其先修课程如下表所示:
请你判断下列课程安排方案哪个(些)是合理的( )。 -
- 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
- 20.
- 三.问题求解(共2题,每题5分,共计10分)
-
- 21. 75名儿童到游乐场去玩。他们可以骑旋转木马,坐滑行铁道,乘宇宙飞船。已知其中20人这三种东西都玩过,55人至少玩过其中的两种。若每样乘坐一次的费用是5元,游乐场总共收入700,可知有_________名儿童没有玩过其中任何一种。
-
- 22. 已知a, b, c, d, e, f, g七个人中,a会讲英语;b会讲英语和汉语;c会讲英语、意大利语和俄语;d会讲汉语和日语;e会讲意大利语和德语;f会讲俄语、日语和法语;g会讲德语和法语。能否将他们的座位安排在圆桌旁,使得每个人都能与他身边的人交谈?如果可以,请以“a b”开头写出你的安排方案:_________。
- 四.阅读程序(共4题,每题8分,共计32分)
-
- 23.
-
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 输出:____①_____
-
- 24.
-
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); end. 输入:1000 3 5 13 11 输出:____①_____
-
- 25.
-
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 输出:____①_____
-
- 26.
-
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; 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分)
-
- 27. 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; 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.
- 27. Joseph
-
- 28. 逻辑游戏
题目描述:
一个同学给了我一个逻辑游戏。他给了我图1,在这个图上,每一段边界都已经进行了编号。我的任务是在图中画一条连续的曲线,使得这条曲线穿过每一个边界一次且仅穿过一次,而且曲线的起点和终点都在这整个区域的外面。这条曲线是容许自交的。
对于图1,我的同学告诉我画出这样的一条曲线(图2)是不可能的,但是对于有的图形(比如图3),画出这样一条曲线是可行的。对于给定的一个图,我想知道是否可以画出满足要求的曲线。
输入:
输入的图形用一个n×n的矩阵表示的。矩阵的每一个单元里有一个0到255之间(包括0和255)的整数。处于同一个区域的单元里的数相同,相邻区域的数不同(但是不相邻的区域里的数可能相同)。
输入的第一行是n(0
输出:
当可以画出满足题意的曲线的时候,输出“YES”;否则,输出“NO”。
输入样例:
3
1 1 2
1 2 2
1 1 2
输出样例:
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]) <> orig) and (( ____②_____ <> a[x - 1, y]) or (abs(a[x, y - 1]) <> orig)) then inc(ns); if (abs(a[x + 1, y]) <> orig) and ((a[x + 1, y - 1] <> a[x + 1,y]) or (abs(a[x, y - 1]) <> orig)) then inc(ns); if (abs(a[x, y - 1]) <> orig) and (( ____③_____ <> a[x, y - 1]) or (abs(a[x - 1, y]) <> orig)) then inc(ns); if (abs(a[x, y + 1]) <> orig) and ((a[x - 1, y + 1] <> a[x,y + 1]) or (abs(a[x - 1, y]) <> orig)) then inc(ns); 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.
- 28. 逻辑游戏