2001年NOIP提高组初赛真题

一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题1.5分,多选无分,共30分)
1. 中央处理器CPU能访问的最大存储器容量取决于( )
  • A. 地址总线
  • B. 数据总线
  • C. 控制总线
  • D. 内存容量
2. 计算机软件保护法是用来保护软件( )的
  • A. 编写权
  • B. 复制权
  • C. 使用权
  • D. 著作权
3. 64KB的存储器用十六进制表示,它的最大的地址码是( )
  • A. 10000
  • B. FFFF
  • C. 1FFFF
  • D. EFFFF
4. 在树型目录结构中,不允许两个文件名相同主要指的是( )
  • A. 同一个磁盘的不同目录下
  • B. 不同磁盘的同一个目录下
  • C. 不同磁盘的不同目录下
  • D. 同一个磁盘的同一个目录下
5. 下列设备哪一项不是计算机输入设备( )
  • A. 鼠标
  • B. 扫描仪
  • C. 数字化仪
  • D. 绘图仪
6. 在计算机硬件系统中,cache是( )存储器
  • A. 只读
  • B. 可编程只读
  • C. 可擦除可编程只读
  • D. 高速缓冲
7. 若我们说一个微机的CPU是用的PII300,此处的300确切指的是( )
  • A. CPU的主时钟频率
  • B. CPU产品的系列号
  • C. 每秒执行300百万条指令
  • D. 此种CPU允许最大内存容量
8. Email邮件本质上是一个( )
  • A. 文件
  • B. 电报
  • C. 电话
  • D. 传真
9. 2KB的内存能存储( )个汉字的机内码
  • A. 1024
  • B. 516
  • C. 2048
  • D. 218
10. 以下对Windows的叙述中,正确的是( )
  • A. 从软盘上删除的文件和文件夹,不送到回收站
  • B. 在同一个文件夹中,可以创建两个同类、同名的文件
  • C. 删除了某个应用程序的快捷方式,将删除该应用程序对应的文件
  • D. 不能打开两个写字板应用程序
11. 运算式(2047)10-(3FF)16+(2000)8的结果是( )
  • A. (2048)10
  • B. (2049)10
  • C. (3746)8
  • D. (1AF7)16
12. TCP/IP协议共有( )层协议
  • A. 3
  • B. 4
  • C. 5
  • D. 6
13. 若已知一个栈的入栈顺序是1,2,3,…,n,其输出序列为P1,P2,P3,…,Pn,若P1是n,则Pi是( )
  • A. i
  • B. n-1
  • C. n-i+1
  • D. 不确定
14. 计算机病毒是( )
  • A. 通过计算机传播的危害人体健康的一种病毒
  • B. 人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合
  • C. 一种由于计算机元器件老化而产生的对生态环境有害的物质
  • D. 利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒
15. 下面关于算法的错误说法是( )
  • A. 算法必须有输出
  • B. 算法必须在计算机上用某种语言实现
  • C. 算法不一定有输入
  • D. 算法必须在有限步执行后能结束
16. [x]补码=10011000,其原码为( )
  • A. 011001111
  • B. 11101000
  • C. 11100110
  • D. 01100101
17. 以下哪一个不是栈的基本运算( )
  • A. 删除栈顶元素
  • B. 删除栈底的元素
  • C. 判断栈是否为空
  • D. 将栈置为空栈
18. 在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找12,所需的关键码比较的次数为( )
  • A. 2
  • B. 3
  • C. 4
  • D. 5
19. 一棵二叉树的高度为h,所有结点的度为0,或为2,则此树最少有( )个结点
  • A. 2^h-1
  • B. 2h-1
  • C. 2h+1
  • D. h+1
20. 无向图G=(V,E),其中V={a,b,c,d,e,f} E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)} 对该图进行深度优先遍历,得到的顶点序列正确的是( )
  • A. a,b,e,c,d,f
  • B. a,c,f,e,b,d
  • C. a,e,b,c,f,d
  • D. a,b,e,d,f,c
二、问题求解(5+7=12分)
21. 已知一棵二叉树的结点名为大写英文字母,其中序与后序遍历的顺序分别为:CBGEAFHDIJ与CGEBHFJIDA则该二叉树的先序遍历的顺序为:_________
22. 平面上有三条平行直线,每条直线上分别有7,5,6个点,且不同直线上三个点都不在同一条直线上。问用这些点为顶点,能组成_________个不同四边形?
三、阅读程序,写出程序正确的运行结果(4+7+8+9=28分)
23.
program gao7_1:
 function ack(m,n:integer):integer;
  begin
   if m=0 then ack:=n+1
       else if n=0 then ack:=ack(m-1,1)
             else ack:=ack(m-1,ack(m,n-1))
  end;
   begin   writeln(ack(3,4)); readln; end.
输出:____①_____
24.
program  gao7_2;
 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;
  end.
输入12
输出:____①_____
25.
program gao7_3;
 var i,j,h,m,n,k:integer;
   b:array[1..10]of integer;
 begin
  readln(n);
   for i:=1 to 10 do
    begin
    m:=n;j:=11;
    while m>0 do
     begin j:=j-1;b[j]:=m mod 10;m:=m div 10       end;
    for h:=j to 10 do     n:=n+b[h];
    end;
   writeln(n);
 end. 
输入1234
输出:____①_____
26.
program gao7_4;
 var x,y1,y2,y3:integer;
 begin
  readln(x);y1:=0;y2:=1;y3:=1;
  while y2<=x do
   begin
    y1:=y1+1;y3:=y3+2;y2:=y2+y3
    end;
   writeln(y1);
  end.
输入:23420
输出:____①_____
四、完善程序(每空3分,共30分)
27. 存储空间的回收算法。设在内存中已经存放了若干个作业A,B,C,D。其余的空间为可用的(如图)。



  此时,可用空间可用一个二维数组dk[1..100,1..2 ]表示,(如下表一中(a)),其中:dk[i,1]对应第i个可用空间首址,dk[i,2]对应第i个可用空间长度如上图中,dk:



  现某个作业释放一个区域,其首址为d,长度为L,此时将释放区域加入到可用空间表中。要求在加入时,若可用空间相邻时,则必须进行合并。因此出现下面的4种情况(如上图一(b)所示)。

 (1)下靠,即回收区域和下面可用空间相邻,例如,d=80,L=20,此时成为表二中的(a)。

 (2)上靠,例如,d=600,L=50,此时表成为表二中的(b)。

 (3)上、下靠,例如,d=150,L=150,此时表成为表二中的(c)。

 (4)上、下不靠,例如,d=430,L=20,此时表成为表二中的(d)。



 程序说明:对数组dk预置2个标志,即头和尾标志,成为表二中(b),这样可使算法简单,sp为dk表末地址。

程序清单:

PROGRAM GAO7_5;
 var   i,j,sp,d,l:integer;
   dk    :array[0..100,1..2]of integer;
 begin
  readln(sp);
 for i:=1 to sp do 
  readln(dk[i,1],dk[i,2]);
  dk[0,1]:=0;dk[0,2]:=0; ____①_____ ;
  dk[sp,1]:=10000;dk[sp,2]:=0;readln(d,l);i:=1;
 while dk[i,1]<d do i:=i+1; ____②_____ ;
 if(dk[i,1]+dk[i,2]=d)then
    if(d+l=dk[i+1,1])then
     begin
      dk[i,2]:= ____③_____  ;
      for j:=i+1 to sp-1 do
       dk[j]:=dk[j+1];
      sp:=sp-1;
      end
     else dk[i,2]:=dk[i,2]+l
else if(d+l=dk[i+1,1])then
     begin
      dk[i+1,1]:= ____④_____ ;dk[i+1,2]:=dk[i+1,2]+l
     end
   else begin
     for j:=sp downto i+1 do  dk[j+1]:=dk[j];
      ____⑤_____ :=d;   dk[i+1,2]:=l;sp:=sp+1;
    end;
 for i:=1 to sp-1 do     writeln(dk[i,1]:4,dk[i,2]:4);readln;
end.
28. 求关键路径

 设有一个工程网络如下图表示(无环路的有向图):

 其中,顶点表示活动,①表示工程开始,⑤表示工程结束(可变,用N表示),边上的数字表示活动延续的时间。



如上图中,活动①开始5天后活动②才能开始工作,而活动③则要等①、②完成之后才能开始,即最早也要7天后才能工作。

 在工程网络中,延续时间最长的路径称为关键路径。上图中的关键路径为:①—②—③—④—⑤共18天完成。

 关键路径的算法如下:

数据结构:

 R[1..N,1..N]OF INTEGER;   表示活动的延续时间,若无连线,则用-1表示;

 EET[1..N]           表示活动最早可以开始的时间

 ET[1..N]            表示活动最迟应该开始的时间

关键路径通过点J,具有如下的性质:EET[J]=ET[J]

约定:

 结点的排列已经过拓扑排序,即序号前面的结点会影响序号后面结点的活动。

程序清单:

program gao7_6;
 var i,j,n,max,min,w,x,y:integer;
   r:array[1..20,1..20] of integer;
   eet,et:array[1..20] of integer;
 begin
  readln(n)
  for i:=1 to n do
   for j:=1 to n do 
    r[i,j]:=-1;
  readln(x,y,w);{输入从活动x到活动y的延续时间,以0为结束}
 while x<>0 do
   begin
    r[x,y]:=w; ____①_____ ;
   end;
  eet[1]:=0;{认为工程从0天开始}
  for i:=2 to n do 
   begin
    max:=0;
    for j:=1 to n do 
     if r[j,i]<>-1 then
       if ____②_____ then max:=r[j,i]+eet[j];
    eet[i]:=max;
   end;
    ____③_____  ;
   for i:=n-1 downto 1 do
    begin
     min:=10000;
     for j:=1 to n do 
      if r[i,j]<>-1 then
        if ____④_____ then min:=et[j] - r[i,j];
       et[i]:=min;
      end;
    writeln(eet[n]);
    for i:=1 to n -1 do 
     if ____⑤_____ then write(i,'→');
  write(n);readln
end. 
查看参考答案