2000年信息学奥赛NOIP普及组
剩余时间 --:--:--
单选题 共 20 题
1.

计算机病毒的特点是(   ).

2.

某数列有1000个各不相同的单元,由低至高按序排列;现要对该数列进行二分法检索(binary search),在最坏的情況下,需检视(     )个单元.

3.

大家知道,不同类型的存储器组成了多层次结构的存储器体系,按存取速度从快到慢的排列是(   ).

4.

WINDOWS  9X 是一种(    )操作系统.

5.

在待排序的数据表已经为有序时,下列排序算法中花费时间反而多的是(    ).

6.

设循环队列中数组的下标范围是1–n,其头尾指针分别为f和r,则其元素个数为(  ).

7.

计算机主机是由CPU 与(    )构成的.

8.

GB2312-80 规定了一级汉字3755个,二级汉字3008个,其中二级汉字字库中的汉字是以(     )为序排列的.

9.

在外部设备中,绘图仪属于(    ).

10.

在Windows   9X中,菜单项后带有符号“…”,表示该菜单项(        ) .

11.

某种计算机的内存容量是640K,  这里的640K 容量是指(    ) 个字节.

12.

下列叙述中,正确的是(     ).

13.

已知数组A中,每个元素A[I,J]在存贮时要占3个字节,设I从1变化到8,J从1变化到10,分配内存时是从地址SA开始连续按行存贮分配的。

试问:A[5,8]的起始地址为(      ).

14.

请仔細閱读下列程序段:

    上列程序段的正确輸出是(    ).

15.

Internet 的规范译名应为(     ).

16.

RAM 中的信息是(   ).

17.

电线上停着两种鸟(A,B),可以看出两只相邻的鸟就将电线分为了一个线段。这些线段可分为两类:一类是两端的小鸟相同;另一类则是两端的小鸟不相同.

已知:电线两个顶点上正好停着相同的小鸟,试问两端为不同小鸟的线段数目一定是(    ).

18.

线性表若采用链表存贮结构,要求内存中可用存贮单元地址(     ).

19.

下列无符号数中,最小的数是(    ).

20.

算法是指(     ).

填空题 共 1 题
1.

已知,按中序遍历二叉树的结果为:abc

问:有多少种不同形态的二叉树可以得到这一遍历结果,并画出这些二叉树。

编程题 共 5 题
1.

多项式的乘法。

   例如有如下多项式:

程序说明:

    多项式的表示:系数、指数

    如上例中:    P(X):  系数   指数          Q(X)    系数     指数

                                     2       2                        1       1

                                   -1       1                        1       0

                                    1       0                        0       0

                                    0       0

 PXQ的结果存入C中。其输出格式是:依次用一对括号内的(系数,指数)分别来表示。如上例的输出结果表示为:(2,3)(1,2)(1,0)

程序清单

2.

program noi_004;

    var   i, j, j1, j2,  p, q :  integer;

           p1           :  boolean;

           b,c           :  array[1..100]  of  integer;

    Begin

      readln(q,p);   j:=1;  p1:=true;     b[j]:=q;  j1:=0;

       while  (q>0) and  p1 do

         begin

           j1:=j1+1;  c[j1]:=q*10 div p;  q:=q*10-c[j1]*p;

            if q>0 then  begin 

                           j2:=1;

                           while  (b[j2]<>q) and (j2<=j)  do   j2:=j2+1;

                             if   b[j2]=q   then 

                                begin 

                                  p1:=false;  write('0.');

                                  for i:=1 to j2-1 do    write(c[i]:1);

                                  write('{');

                                  for i:=j2 to j1 do   write(c[i]:1);

                                  writeln('}')

                                end

                    else   begin   j:=j+1;  b[j]:=q   end

               end

        end;

      if  q=0  then   begin

                       write('0.');

                       for i:=1 to j1 do   write(c[i]:1);

                       writeln

                     end;     readln

 End.

输入  ① 1   8    输出          

输入   ② 2   7    输出

3.

个0和个1,排成一圈。从任一个位置开始,每次按逆时针的方向以长度为n+1的单位进行数二进制数。

要求给出一种排法,用上面的方法产生出来的个二进制数都不相同。

例如,当n=2时, 即个0 和个1 排成如下一圈:

比如,从A位置开始,逆时针方向取三个数000,然后再从B位置上开始取三个数001,接着从C开始取三个数010,...可以得到000,001,010,101,011,111,110,100共8个二进制数且都不相同。

程序说明 

          以n=4为例,即有16个0,16个1,

          数组a用以记录32个0,1的排法,

          数组b统计二进制数是否已出现过。

程序清单

4.

有2×n的一个长方形方格,用一个1×2的骨牌铺满方格。例如n=3时,为2×3方格。

  此时用一个1×2的骨牌铺满方格,共有3种铺法:

试对给出的任意一个n(n>0),求出铺法总数的递推公式。

5.

program noi_002;

     var   i, j, l, n, k, s, t :  integer;

           b                   :  array[1..10] of  0..9;  

   Begin

      readln(l,n);       s:=l; k:=1; t:=l;

      while  s<n  do

       begin   k:=k+1;  t:=t*l;  s:=s+t   end;

      s:=s-t;  n:=n-s-1;

      for  i:=1 to 10 do  b[i]:=0;

      j:=11;

      while  n>0 do

        begin  j:=j-1; b[j]:=n mod l;  n:=n div l   end;

       for  i:=10-k+1  to  10  do   write(chr(ord('A')+b[i]));

   End.

 输入: 4     167

 输出:

C++ 编辑器
输入
输出