image

编辑人: 青衫烟雨

calendar2025-07-23

message5

visits425

第八届全国青少年信息学奥林匹克联赛(NOIP2002)初赛试题 (普及组)参考答案

一、单选题

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


11、E-ml地址中用户名和邮件所在服务器名之间的分隔符号是(    ) 。

A #

B @

C &

D  $


12、

A 0.1

B 0.75

C 0.8

D 0.25


13、IP v4地址是由(    ) 位二进制数码表示的。

A 16

B 32

C 24

D 8


14、算式

的结果是(    ) 。

A

B

C

D


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,则下图中的空格中应填人(    ) 。

A 6

B 0

C 5

D 3


二、实操题

21、如下图,有一个无穷大的的栈S,在栈的右边排列着1,2,3,4,5共五个车厢。其中每个车厢可以向左行走,也可以进入栈S让后面的车厢通过。现已知第一个到达出口的是3号车厢,请写出所有可能的到达出口的车厢排列总数(不必给出每种排列)。

参考答案:所有可能的到达出口的车厢排列总数为10种。


22、将N个红球和M个黄球排成一行。例如:N=2,M=3可得到以下6种排法:

红红黄黄黄 红黄红黄黄 红黄黄红黄 黄红红黄黄 黄红黄红黄 黄黄黄红红

问题:当N=4,M=3时有多少种不同排法?(不用列出每种排法)

参考答案:当N=4,M=3时,共有40种不同排法。


23、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

输出:

参考答案:由于提供的代码存在语法错误和逻辑问题,无法直接运行。根据题目描述,似乎是要实现某种循环移位操作,但代码中的逻辑和变量命名存在混乱。首先,我们需要修复代码中的语法错误。根据题目描述,输入为10 4,表示有10个整数,每次移动4个位置。根据这个逻辑,我们可以尝试重新编写代码。


24、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

输出:

参考答案:由于提供的代码存在多处语法错误,如“jwz=n”应为“jw=n”,“ch1:=Ch[jr];Ch[jr]:=ch[jw];ch[jw]:=ch1:jr:=jr+13”应为“ch1:=ch[jr]; ch[jr]:=ch[jw]; ch[jw]:=ch1; jr:=jr+1;”,以及缺少分号等,因此无法直接编译运行。但根据题目描述,代码的目的似乎是对输入的字符串进行某种操作,具体为:1. 读入一个整数n,表示接下来要读入n个字符。2. 读入n个字符,存入数组ch中。3. 使用双指针方法,对数组ch进行某种操作。4. 输出操作后的数组ch。


25、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

输出:

参考答案:根据给定的代码和输入,输出结果为:输出: 2051


26、问题描述:将n个整数分成k组(k≤n,要求每组不能为空),显然这k个部分均可得到一个各自的和s1,s2,……sk,定义整数P为:

问题求解:求出一种分法,使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]存放最佳方案

程序:

参考答案:该问题的求解需要利用动态规划的思想,根据P的定义,我们需要计算出所有可能的分组方式,然后找出使P最小的分组方式。在程序中,使用数组a存放原数,数组s存放每个部分的和,数组b用于穷举,数组d存放最佳方案。首先,我们需要初始化数组d,将d[i]设为i,表示每个数都自成一组。然后,从数组a的第二个数开始遍历,依次将当前数放入前面已经形成的k-1个组中,更新数组s和d,并计算P的值。最后,输出数组d即可。具体实现过程中,我们需要用到动态规划的思想,将问题分解为若干个子问题,通过求解子问题的最优解来得到原问题的最优解。在求解子问题时,我们需要记录已经计算过的子问题的解,避免重复计算,提高算法的效率。


27、问题描述:工厂在每天的生产中,需要一定数量的零件,同时也可以知道每天生产一个零件的生产单价。在N天的生产中,当天生产的零件可以满足当天的需要,若当天用不完,可以放到下一天去使用,但要收取每个零件的保管费,不同的天收取的费用也不相同。

问题求解:求得一个N天的生产计划(即N天中每天应生产零件个数),使总的费用最少。

输入:N(天数N<=29)

每天的需求量(N个整数)

每天生产零件的单价(N个整数)

每天保管零件的单价(N个整数)

输出:每天的生产零件个数(N个整数)

例如:当N=3时,其需要量与费用如下:

生产计划的安排可以有许多方案,如下面的三种:

程序说明:

b[n]:存放每天的需求量

c[n]:每天生产零件的单价

d[n]:每天保管零件的单价

e[n]:生产计划

程序:

参考答案:这个问题可以通过动态规划来解决。首先,我们需要定义一个数组e[i]来存储第i天的生产计划,即第i天需要生产的零件个数。然后,我们可以使用循环从第1天到第N天,对于每一天,我们计算两种费用:一种是生产费用,即生产零件的单价乘以当天需要生产的零件个数;另一种是保管费用,即前一天剩余的零件个数乘以当天保管零件的单价。最后,我们比较这两种费用,选择费用较小的那个作为当天需要生产的零件个数,并更新e数组。具体的算法如下:1. 初始化e数组,将第1天的生产计划设为当天的需求量b[1]。2. 对于第2天到第N天,我们计算两种费用:- 生产费用:c[i] * e[i-1]- 保管费用:d[i-1] * (e[i-1] - b[i])3. 选择费用较小的那个作为当天需要生产的零件个数,即e[i] = max(0, b[i] - e[i-1] + (c[i-1]*e[i-1] - d[i-1]*(e[i-1] - b[i])) / (c[i-1] + d[i-1]))4. 重复步骤2和步骤3,直到计算完第N天的生产计划。


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:第八届全国青少年信息学奥林匹克联赛(NOIP2002)初赛试题 (普及组)参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share