主题:第八届全国青少年信息学奥林匹克联赛(NOIP2002)试题
第八届全国青少年信息学奥林匹克联赛(NOIP2002)试题
(普及组PASCAL语言二小时完成)
一.选择一个正确答案代码(A/B/C/D,填入每题的括号内(每题1.5分,多选无分,共30分)
1)微型计算机的问世是由于( ) 的出现。
A) 中小规模集成电路 B) 晶体管电路 C) (超)大规模集成电路 D) 电子管电路
2)下列说法中正确的是( ) 。
A) 计算机体积越大,其功能就越强
B) CPU的主频越高,其运行速度越快
C) 两个显示器屏幕大小相同,则它们的分辨率必定相同
D)点阵打印机的针数越多,则能打印的汉字字体越多
3)Windows98中,通过查找命令查找文件时,若输入F*.? , 则下列文件( ) 可以被查到。
A) F.BAS B) FABC.BAS C) F.C D) EF.
4)CPU处理数据的基本单位是字,一个字的字长( ) 。
A) 为8个二进制位 B) 为16个二进制位
C) 为32个二进制位 D) 与芯片的型号有关
5)资源管理器的目录前图标中增加"+"号,这个符号的意思是( ) 。
A) 该目录下的子目录已经展开 B) 该目录下还有子目录未展开
C) 该目录下没有子目录 D) 该目录为空目录,
6)下列哪一种程序设计语言是解释执行的( ) 。
A) Pascal B) GWBASIC C) C++ D) FORTRAN
7)启动WORD的不正确方法是( ) 。
A) 单击Office工具栏上的Word图标
B) 单击"开始"→"程序"→Word
C) 单击"开始"→"运行",并输入Word按回车
D) 双击桌面上的"Word快捷图标"
8)多媒体计算机是指( ) 计算机。
A) 专供家庭使用的 B) 装有CDROM的
C) 连接在网络上的高级 D) 具有处理文字、图形、声音、影像等信息的
9)在树型目录结构中,不允许两个文件名相同主要是指( ) 。
A) 同一个磁盘的不同目录下 B) 不同磁盘的同一个目录下
C) 不同磁盘的不同目录下、 D) 同一个磁盘的同一个目录下
10)用画笔(Paintbrush)绘制图形并存储在文件中,该图形文件的文件名缺省的后缀为( ) 。
A) .jpg B) .bmp C) .gif D).tiff
t11)E-ml地址中用户名和邮件所在服务器名之间的分隔符号是( ) 。
E A) # B) @ C) & D) $
12)(0.5)10=( ) 16.
A) 0.1 B) 0.75 C) 0.8 D) 0.25
13)IP v4地址是由( ) 位二进制数码表示的。
A) 16 B) 32 c) 24 D) 8
14)算式(2047)10一(3FF)16+(2000)8的结果是( ) 。
A) (2048)10 B) (2049)10 C) (3746)8 D) (1AF7)16
15)下列叙述中,错误的是( )
A) Excel中编辑的表格可以在Word中使用
B) 用Word编辑的文本可以存成纯文本文件
C) 用记事本(Notepa D) 编辑文本时可以插入图片
D) 用画笔(Paintbrush)绘图时可以输入文字
16)一个向量第一个元素的存储地址是100,每个元素的长度是2,则第5个元素的地址是( )
A) 110 B) 108 C) 100 D) 109
17)在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是( ) 。
A) 希尔排序 B) 起泡排序 C) 插入排序 D) 选择排序
18)在计算机网络中,Modem的功能是( )
A) 将模拟信号转换为数字信号 B) 将数字信号转换为模拟信号
C) 实现模拟信号与数字信号的相互转换 D) 实现将模拟信号的数字信号
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 D) 0
20)要使1…8号格子的访问顺序为:82、63、73、1、4,则下图中的空格中应填人( ) 。
1 2 3 4 5 6 7 8
4 6 1 -1 7 3 2
A) 6 B) O C) 5 D) 3
二.问题求解:
如下图,有一个无穷大的的栈S,在栈的右边排列着1,2,3,4,5共五个车厢。其中每个车厢可以向左行走,也可以进入栈S让后面的车厢通过。现已知第一个到达出口的是3号车厢,请写出所有可能的到达出口的车厢排列总数(不必给出每种排列)。
出口← ← 1 2 3 4 5
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);
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 4
输出:
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]);
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)2+(S1一S3)2+……+(S1-Sk)2+(s2-s3)2+……+(Sk-1-Sk)2
问题求解:求出一种分法,使P为最小(若有多种方案仅记一种〉
程序说明:
数组: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;
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:= ③
sum:=sum+(s[I]-s[j])*(s[I]-s[j]);
if ④ then
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 15 30
生产单价 20 30 32
保管单价 5 l0 0
生产计划的安排可以有许多方案,如下面的三种:
第一天 第二天 第三天 总的费用
25 15 30 25*2O+15*30+30*32=1910
40 0 30 40*20+15*5+30*32=1835
70 0 0 70*20+45*5+30*10=1925
程序说明:
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;
① :=10000;c[n+2]:=0;b[n+1]:=0;jO:=1;
while (jO<=n)do
begin
yu:=c[j0]; j1:=jO; s:=b[j0];
while ② do
begin
③ j1:=j1+1;s:=s+b[j1];
end;
④ jO:=j1+1;
end;
for i:=1 to n do ⑤
readln;
end.