用户名: 密 码:   注册
文章系统    微机使用记录  签到记录 设为首页 

1995-2012历年全国青少年信息学奥林匹克联赛初赛试题(包括答案)。

作者:苏振亚  信息技术 小知识   2012/6/4 6:54:51 (11年前) 点击:98531次
第四届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题
(初中组) 
(PASCAL 语言   竞赛用时:2小时)
●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●

一、选择填空(25%)
1、操作系统是重要的系统软件,下面几个软件中不属于操作系统的是_______。  {1%}
   (A)MS-DOS   (B)UCDOS  (C)PASCAL  (D)WINDOWS 95 

2、MS-DOS 系统对磁盘信息进行管理和使用是__________为单位的。         {1%}
(A) 文件      (B) 盘片    (C) 字节     (D) 命令

3、在计算机内部用来传送、存贮、加工处理的数据或指令(命令)都是以___形式进行的.{1%}
   (A)十进制码    (B)智能拼音码   (C)二进制码   (D)五笔字型码 

4.已知在计算机C:\DOS下有一个正确的FORMAT.COM文件,当执行如下命令:
   C:\> FORMAT  A: < 回车 > 得到的回答是 BAD COMMAND  OR FILE NAME 提示信息,下面解释正确的是_____________。                          {2%}
(A) 根目录中没有AUTOEXEC.BAT 文件
(B) 在执行该命令前操作者没执行过PATH 命令
(C) C:\DOS 中的FORMAT.COM文件有错
(D) 由于AUTOEXEC.BAT 或操作者最后执行过的PATH 命令缺少路径C:\DOS,或者根本没有执行PATH 命令

5.将A盘上50个文件用C:\>COPY  A: *.* 命令复制到C盘的当前目录中,在复制到某一个文件时,由于读数据出错,屏幕显示:                         {2%}
    ABORT, RETRG ,  IGNORE , FAIL  ?
   键入“I”后,继续复制没再出现过错误信息,最后复制的结果是_________。
   (A)读数据出错的文件不正确,其他文件正确
   (B)读数据出错的文件不正确,其它文件也不正确
   (C)读数据出错的文件正确,其它文件不正确
(D)复制的文件完全正确

6.下面四个不同进制的数,最小的一个数是           。                  {2%}
  (A)(11011001)2   (B)(75)10   (C)(37)8   (D)(A7)16

7.小张用十六进制、八进制和十进制写了如下一个等式:                   {3%}
        52 - 19 = 33
   式中三个数是各不相同进位制的数,试问52、19、33,分别为_________.
  (A)八进制,十进制,十六进制       (B)十进制,十六进制,八进制
  (C)八进制,十六进制,十进制       (D)十进制,八进制,十六进制

8.如果用一个字节来表示整数,最高位用作符号位,其它位表示数值。例如:{4%}
0
0 0 0 0 0 0 1
                    ↑ 符号位表示正
1 0 0 0 0 0 0 1
                    ↑ 符号位表示负
① 试问这样表示法的整数A 的范围应该是_____________________。
       (A) -127 ≤ A ≤ 127         (B) -128 ≤ A ≤  128
       (C) –128 ≤ A < 128         (D) -128 < A ≤  128 
② 在这样表示法中,以下         说法是正确的。
    (A)范围内的每一个数都只有唯一的格式
    (B)范围内的每一个数都有两种格式
    (C)范围内的一半数有两种格式
 (D)范围内只有一个数有两种表示格式

9.下列IF语句中,ENDIF 表示相应IF的结束:                           {4%}
         y=0                                
           if  x<0                            
             then  Y=5                      
             else  if   x<10                 
                     then  y=10   
                   if x<100 
                      then  y=100
                      endif 
                  else y=200 
                  endif
          endif
    试指出:
        当X=80 时,运行的结果是______;
        当X=5 时,运行结果为_________。
   (A) Y=9  (B)  Y=5  (C) Y=10   (D) Y=100   (E)Y=200 

10.设栈S的初始状态为空,现有5个元素组成的序列{1,2,3,4,5},对该序列在S栈上依次进行如下操作(从序列中的1开始,出栈后不再进栈):进栈、进栈、进栈,出栈、进栈、出栈、进栈。试问出栈的元素序列是______________。{4%}
   (A){ 5,4,3,2,1}    (B){2,1}    (C){ 2,3}    (D){3,4}
二、问题求解:(20%)
1.已知一个数列U1,U2,U3,…,UN,… 往往可以找到一个最小的K值和K个数a1,a2, …,ak使得数列从某项开始都满足:
         UN+K=a1UN+K-1+a2UN+K-2+……+akUN                             (A)
     例如对斐波拉契数列1,1,2,3,5,…可以发现:当K=2,a1 =1,a2 =1时,从第3项起(即N>=1)都满足U n+2 =Un+1+Un 。试对数列12,22,32,…,n2,…求K和a1,a2, …,aK使得(A)式成立。                                      {7%}

2.某班有50名学生,每位学生发一张调查卡,上写a,b,c三本书的书名,将读过的书打,结果统计数字如下: 只读a者8人;只读b者4人;只读c者3人;全部读过的有2人;读过a,b两本书的有4人;读过a,c两本书的有2人;读过b,c两本书的有3人;{6%}
    (1)读过a的人数是             (2)一本书也没有读过的人数是         

3.任给自然数n,k, 1≤K≤9 ,按如下计算步骤求序列XJXJ-1……X0的步骤:{8%}
(1) j=0
(2) 如果N>=K 则转第3步,否则转第7步     
(3) Xj = N  MOD K                 {div表示整数除法,结果取整数;
(4) N =N DIV K                         mod表示整除取余数}
(5) j=j+1                                 
(6) 回第2步
(7) Xj = N                                
(8) 结束
试求当: N=1998, K=3时,XJXJ-1……X0 之值。

三、阅读程序,写出程序的正确运行结果(39%)
    1. Program  exp1  (imput,output);                                   (7%)
        Var  i,  s,  max: integer;
             a    :array [1..10]  of  integer;
        begin 
          for i:=1 to 10  do   read (a[i]);
          max:=a[1] ;s:=a[1];
          for i:=2  to  10  do 
            begin 
              if  s<0  then  s:=0;               
                 s:= s+a[i];                    
           if s>max  then  max:=s
        end;
      writeln(‘max=’, max)
   end.  
      输入:-2  13  -1  4  7  8  -1  -18  24  6
      输出:max=

    2. Program   exp2 (input,output);                                       {10%}
   Const  n=5;
   Var  i,j,k : integer;
       a  : array[1..2*n, 1..2*n] of  integer;
   Begin
      K:=1;
      For I:=1 to 2*n-1 do
        If i<=n  then  
          if  odd(i)  then  
               for j:= I  downto  1  do       
                  begin     
                       a [I-j+1,j]:=k;    k:=k+1       
                    end                         
        else  for j: =1  to  i  do                 
                begin
                   a[i-j+1,j]:=k;   k:=k+1;
                end
        else  if odd(i)  then  for  j:=n  downto  I-n+1 do
                begin
                   a[I-j+1,j]:=k;    k:=k+1;           
                end                                  
        else  for j:=I-n+1 to n  do                              
                  begin
                    a[I-j+1,j]:=k;   k:=k+1;
                  end;
          for  I:=1  to  n  do
             begin                    
                for  j:=1 to n do     
                   write(a[I,j]:3);
               writeln
               end;
      end.
    
3. Program  exp3 (input,output);                                       {10%}
Const  N=10;
Var 
  S,I : integer;
Function  CO(I1:integer) : integer;
   VAR J1,S1 : integer;                           
   Begin                                          
     S1:=N;
       For J1:= (N-1)  downto  (N-I1+1)  do      
         S1:= S1*J1  div  (N-J1+1);                
       CO:=S1
     End;
 Begin                                      
   S:=N+1;                                   
   For I:= 2  to  N  do  S:=S + CO(I);
Writeln(‘S=’,S);
  End.

    4. Program  exp4(input,output);           {12%}
  Const N=3;
  VAR   I,J,S,X  :integer;
        P       :array[0..n+1] of integer;
        G       :array[0..100] of integer;
    Begin
      For I := 0 to 100 do  G[I]:=0;
      P[0]:=0; P[n+1]:=100;                         
      For I:= 1 to n do read (P[I]);  readln;     
      For I:= 0 to n do                      
        For J:= I+1 to N+1 do                     
          G[abs(P[J]-P[I])]:=G[abs(P[J]-P[I])]+1;     
       S:=0;
       For I:=0  to   100    do
          If G[I]>0  then  begin                       
                             Write(I,:4);  S:=S+1;                 
                            End;
          Writeln;
       writeln(‘S=’,S);                             
       Writeln(‘input data:’);  readln(X);        
       Writeln(G[x])
   End.
   输入:10   20    65
           input  data:  10
        输出:

四、根据题意,补充完善以下程序:(14%)
        输入一长度不超过80个字符的字符串(称为源串),该字符串由小写英文字母、空格组成,并以'.'结束。单词是由连续字母组成,两个单词之间至少有一个空格。本程序的功能为:首先找出字符串中所有单词并保留一个空格作为单词分隔,存入数组ch中。然后用键盘输入一个待查找的单词,以字符'$'结束。采用顺序查找的方法在ch中进行查找,若找到,则输出该单词在ch中出现的序号(若有多个位置出现该单词,则只输出第一个序号位置)。若不存在,则输出'NOT FOUND'。
        程序如下:(14%)
     PROGRAM EXP1;
     VAR
        A,B,CH  : ARRAY[1..80] OF  CHAR;
        I,J,K,N,M : INTEGER;
     BEGIN
       N := 0;
     REPEAT
        _______1______;    READ(A[N]);                                1%
    UNTIL  A[N]='.';
     READLN;
     K := 0;
     FOR  I := 1 TO N DO
        IF (A[I]>='a')AND(A[I]<='z') THEN
         BEGIN
                 K := K + 1;   
                 ________2_________;                                    2%
         END
         ELSE IF K <> 0  THEN  IF  CH[K]<>'□'  THEN  {□表示一个空格,以下同}
                 BEGIN
        K := K + 1;
        CH[K] := '□'
                 END;
       M := 0_________3________;                                          2%
     REPEAT
       M := M + 1;  READ(B[M]);
     UNTIL  _______4_________;                                           2%
      I := 1; J := 1; K := 1; B[M]:='□';
     WHILE  (I<=N)AND(J<=M) DO
        BEGIN
        IF _________5________  THEN  BEGIN   I := I + 1; J := J + 1 END    3%
                                  ELSE BEGIN
          WHILE  CH[I] <> '□' DO ____6____;  2%
                 I := I + 1; J := 1; K := K +1
                                     END
        END;
       IF _____7________  THEN WRITELN(K:4)                             2%
                                  ELSE WRITELN('NOT FOUND')
    END.
第四届全国青少年信息学(计算机)奥林匹克分区联赛初赛
(初中组) 
参  考  答  案


一、选择填空:共25分
1.不属于操作系统的软件是 C 。                                          {1%}
2.MS-DOS系统对磁盘信息进行管理和使用是以A  为单位的。                {1%}
3.在计算机内部,用来传送、存贮、加工处理的数据或指令(命令)都是以C形式进行的。                                                                 {1%}
4.解释正确的是D。                                                      {3%}
5.最后复制的结果是 A 。                                                {2%}
6.最小的一个数是C 。                                                   {2%}
7.等式中的52,19,33,分别为 B 。                                      {3%}
8.① 这样表示法的整数a的范围应是  A  。                                {2%}
   ② 在这样表示法中,   D   说法是正确的。                              {2%}
9.当x=80时,运行的结果为   E    。                                     {2%}
   当x=5时,运行的结果为   D    。                                      {2%}
10.出栈的元素序列是   D    。                                           {4%}

二、问题求解:共20分
1.当K=   3   ,a1,a2,…,ak为a1=3,a2=-3,a3=1时,
   对数列122232,…,n2,…(A)成立。                                    {3%+3%)
2.(1)读过a的人数是12人。(2)一本书也没读过的人数是30人。        {3%+4%}
3.当n=1998,k=3时,xjxj-1…x0之值为2202000 。                          {7%}

三、阅读程序,写出程序的正确运行结果:共39分
1.输出:max=42                                                         {7%}
2.输出结果为:                                                         {10%}
            1   3   4   10   11
            2   5   9   12   19
            6   8  13   18   20
            7  14  17   21   24
           15  16  22   23   25
3.输出:S=1024                                                         {10%}
4.输出:10 20 34 45 55 65 80 90 100                                        {12%}
         S=9
   输入:input data:10
   输出:2

四、根据题意,补充完善以下程序:(14%)
        PASCAL语言                              BASIC语言
① N:=N+1       ;{1%}                     30 N=N+1
② CH[K]:=A[i]   ;{2%}                     100 CH$(K)=A$(I)
③ N:=K         ;{2%}                    160 N=K
④ B[M]:‘$’   ;{2%}                     180 B$(M)<>“$”
⑤ CH[i]=B[j]        {3%}                    210 CH$(I)=B$(J)
⑥ i:=i+1         ;  {2%}                     220  240
⑦ j>M-1           {2%}                      260 J>M-1
 
第五届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题
(普及组) 
(PASCAL 语言   竞赛用时:2小时)
●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●

一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题1.5分,多选无分,共30分)
    1.微机内的存储器的地址是以(       )编址的。
   A.二进制位     B.字长        C.字节        D.微处理器的型号

    2.下列诸因素中,对微机工作影响最小的是(       )。
   A.尘土        B.噪声         C.温度         D.湿度

    3.在24*24 点阵的字库中,汉字“一 ”与“编”的字模占用字节数分别是(    )。
   A.32、32      B.32、72       C.72、72       D.72、32  

    4.将DOS 系统盘插入A驱动器启动机器,随后使用一批应用软件,在此过程中,DOS 系统盘 (    )。
   A.必须始终插入在A 驱动器中          B.不必再用
   C.可能有时要插入 A驱动器中          D.可能有时要插入B 驱动器中 

    5.以下DOS命令中,有可能在磁盘上建立子目录的是 (    )
   A.TYPE        B.DIR         C.XCOPY      D.CD

    6.在CONFIG.SYS 文件中,装入特定可安装设备驱动程序的命令是 (   )。
   A.BUFFER      B.FILES      C.DRIVER     D.DEVICE

    7.计算机能直接执行的指令包括两部分,它们是(      )。
   A.源操作数与目标操作数         B.操作码与操作数 
   C.ASCII码与汉字代码            D.数字与字符

    8.在微机中,通用寄存器的位数是 (      )。
       A.8位          B.16位        C.计算机字长   D.32位

    9.在计算机中,ASCII码是(   )位二进制代码。
   A.8            B.7            C.12           D.16 

    10.计算机的软件系统通常分为 (    )。
  A.系统软件与应用软件              B.高级软件与一般软件
  C.军用软件与民用软件              D.管理软件与控制软件
    11.执行DOS 命令:C:\ATTRIB  A: *.* 的功能是 (    )。
  A.查看A盘上所有文件属性         B.查看A盘上当前目录中所有文件属性
  C.查看A盘上所有系统文件属性     D.删去A盘上所有隐含文件的属性

    12.执行下列DOS命令,效果等价的是 (   )组。
  A.COPY  *.FOR                   与     COPY    *.FOR     CON
  B.COPY  A: *.*   B:              与     XCOPY   A: *.*    B:
  C.COPY  FILE1.TXT + FILE2.TXT   与     COPY FILE2.TXT +FILE1.TXT
  D.XCOPY  A: *.*  B :/S           与     DISKCOPY   A:  B: 

    13.已知小写字母“M”的十六进制的ASCⅡ码值是6D,则小写字母“C”的十六进制数的ASCII码值是 (     )。
      A.98             B.62            C.99           D.63
 
    14.计算机中的数有浮点与定点数两种,其中用浮点数表示的数,通常由(    )这两部分组成。
      A.指数与基数     B.尾数与小数    C.阶码与尾数    D.整数与小数

    15.下列文件名中,属于DOS 中的保留设备名的为 (    )。
  A.AUX           B.COM         C.CON1         D.PRN1 

  16.启动计算机引导DOS是将操作系统(      )。
  A.从磁盘调入中央处理器            B.从内存储器调入高速缓冲存储器
  C.从软盘调入硬盘                  D.从系统盘调入内存储器

    17.十进制算术表达式 :3*512 + 7*64 + 4*8 + 5的运算结果,用二进制表示为(  )。
  A.10111100101   B.11111100101    C.11110100101    D.11111101101 

    18.组成“教授”(JIAO SHOU),“副教授”(FU JIAO SHOU)与“讲师”(JIANG SHI)这三个词的汉字,在GB2312-80字符集中都是一级汉字,对这三个词排序的结果是(  )。
  A.教授、副教授、讲师               B.副教授、教授、讲师
  C.讲师、副教授、教授               D.副教授、讲师、教授

    19.不同的计算机,其指令系统也不相同,这主要取决于 (    )。
  A.所用的操作系统                   B.系统的总体结构
  C.所用的 CPU                      D.所用的程序设计语言

  20.对具有隐含属性(H)的当前目录下的文件ab.txt, 能成功执行的DOS命令是(  )
  A.TYPE  ab.txt                       B.COPY  ab.txt  xy.txt
  C.DIR  ab.txt                         D.REN  ab.txt   xy.txt 
 
二、回答问题(10分)
   在磁盘的目录结构中,我们将与某个子目录有关联的目录数称为度。例如下图

                                               
   
                                               
该图表达了A盘的目录结构:D1,Dll,…,D2均表示子目录的名字。在这里,根目录的度为2,D1子目录的度为3,D11子目录的度为4,D12,D2,D111,D112,D113的度均为1。不考虑子目录的名字,则可简单的图示为如下所示的树结构:




    若知道一个磁盘的目录结构中,度为2的子目录有2个,度为3的子目录有1个,度为4的子目录有3个。
    试问:度为1的子目录有几个?

三、公式推导(10分)
    根据Nocomachns定理,任何一个正整数n的立方一定可以表示成n个连续的奇数的和。
    例如:
    13= 1
    23= 3+ 5
    33= 7+ 9 +11
    43=  13+15+17+19
    在这里,若将每一个式中的最小奇数称为X,那么当给出n之后,请写出X与n之间的关系表达式:                                             

四、阅读程序,并写出程序的正确运行结果:(每题15分,共30分)
    1.Program  excpl;
       var
           x,y,y1,jk,j1,g,e:Integcr;
           a:array[l..20]of 0..9;
        begin
          x:=3465; y:=264; jk:=20;
          for j1:= 1 to  20  do  a[j1]:= 0;
          while y< >0 do
            begin
                y1:=y mod 10;
                y:= y div 10;
                while  y1<>0 do
                  begin
                     g:=x;
                   for  e:= Jk  downto  1  do
                     begin
                        g:=g+a[e];
                        a[e ]:= g mod 10;
                        g:= g div 10
                     end;
                   y1:= y1- 1
                  end;
                jk:=jk-1
            end;
            j1=1;
            while  a[j1]=0 do      j1:=J1+1;
            for Jk:=j1 to 20 do       write(a[jk]:4)
            WRITELN
        End.
      程序输出结果为:_________________________________ 

2.program   excp2
     var
        i,j:integer;;
        a  :array[1..14] of  integer;
      
     procedure sw(i1,j1:Integer);
        var k1: Integer;
        begin
          for  k1:= 1  to(j1- i1+1) div 2  do
             begin
               a[i1+k1-1]:=a[i1+ k1-1]+a[j1-k1+1];
               a[j1-k1+1]:=a[i1+k1-1]-a[j1-k1+1];
               a[i1+k1-1]:=a[i1-k1+1]-a[J1-k1+1];
             end;
        end;
        begin
           j:=211;
           for i:=1 to 14 do
               begin
                 a[i]:=i;   J:=j-i
               end;
               sw(1,4);    sw( 5,10);
               Sw(11,14);sw(1,14);
        For i:=1  to 14  do
           begin
             If  j  mod  I=1  then write (a[i]:3);
                j:=j-a[i];
           end;
          WRITElN
        end.
    程序运行结果是:________________________________________

五、根据题意,将程序补充完整(20分)
[问题描述]
    下面程序的功能是从键盘读取A,B数组的元素,A,B数组均已从小到大排好序(无相同元素),现将A,B合并为数组C,同样要求数组C也是从小到大排好序(有相同元素时只保留一个)。
程序中N表示数组A,B的长度,i,j,k分别表示数组A,B,C的取数或存数的指针。
[程序清单]
    program excp3;
  const  n=8;  m=2*n;
  type   arr1=array[1..n]of integer;
        arr2=array[1..m]of integer;
  var    a,b  :arr1;         c    :arr2;         i,j,k  :integer;
procedure copy(x:arr1;var y:arr2;var i,j:integer);
  begin     i:=i+1;y[i]:=x[j];j:=j+1;  end;
  begin
     for i:=1 to n do read(a[i]);readln;
     for i:=1 to n do read(b[i]);readln;
   i:=1;j:=1;___________①________
    while__________②__________do.
      if a[i]<b[j] then copy (a,c,k,i)
               else if b[j]<a[i] then copy (b,c,k,j)
                            else begin
                                  copy(a,c,k,i);
                                  __________③__________
                                end;
        while__________④___________do copy(a,c,k,i);
        while__________⑤___________do copy(b,c,k,j);
        for i:=1 to k do write (c[i]:4);
           writeln;
      end.
第五届全国青少年信息学(计算机)奥林匹克分区联赛初赛
(普及组) 
参  考  答  案

一、 选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题1.5分,多选无分,共30分)

题号 1 2 3 4 5 6 7 8 9 10
选择 C B C C C D B C A A
题号 11 12 13 14 15 16 17 18 19 20
选择 B B D C A D B D C A

二、回答问题:(10分)
   答:度为1的子目录有9个

三、公式推导(10分)
   给出n之后,X与n之间的关系表达式为:
          N2-N+1    

四、阅读程序,并写出程序的正确运行结果:(每题1.5分,共30分)
   
 (1)程序的运行结果是:
       9  1  4  7  6  0
  
 (2)程序的运行结果是:
      12  5  10

五、根据题意,将程序补充完整(20分,每空4分)

        PASCAL语言                                BASIC语言
==========================               =========================
① k:=0                                        85  k=0
②  (i<=n)and (j<=n)                              90  (j>n) OR(i>n)
③  j:=j+1                                       135 j=j+1
④  i<=n                                        150 I>N
⑤  j<=n                                        180 j>N


 
第六届全国青少年信息学(计算机)奥林匹克分区联赛试题
( 普及组  PASCAL语言  二小时完成 )

●●  全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效  ●●

一、选择一个正确答案代码(A/B/C/D),填入每题的括号内 (每题1.5分,多选无分,共30分)

1.下列无符号数中,最小的数是(    ).
A.(11011001)2   B.(75)10    C.(37)8          D.(2A)16

2.在外部设备中,绘图仪属于(    ).
    A.输入设备        B.输出设备    C.辅(外)存储器   D.主(内)存储器

3.GB2312-80 规定了一级汉字3755个,二级汉字3008个,其中二级汉字字库中的汉字是以(     )为序排列的.
A.以笔划多少      B.以部首      C.以ASCII码       D.以机内码

4.算法是指(     ).
A.为解决问题而编制的计算机程序       B.为解决问题而采取的方法与步骤
C.为解决问题而需要采用的计算机语言   D.为解决问题而采用的计算方法

5.RAM 中的信息是(   ).
A.生产厂家预先写入的                 B.计算机工作时随机写入的
C.防止计算机病毒侵入所使用的         D.专门用于计算机开机时自检用的

6.计算机主机是由CPU 与(    )构成的.
   A.控制器          B.运算器      C.输入、输出设备     D.内存储器

7.计算机病毒的特点是(   ).
   A.传播性、潜伏性、易读性与隐蔽性      B.破坏性、传播性、潜伏性与安全性
   C.传播性、潜伏性、破坏性与隐蔽性      D.传播性、潜伏性、破坏性与易读性

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

9.在待排序的数据表已经为有序时,下列排序算法中花费时间反而多的是(    ).
   A   堆排序        B  希尔排序     C  冒泡排序     D  快速排序

10.Internet 的规范译名应为(     ).
   A.英特尔网       B.因特网       C. 万维网      D.以太网
11.WINDOWS  9X 是一种(    )操作系统.
    A.单任务字符方式                    B.单任务图形方式
    C.多任务字符方式                    D.多任务图形方式

12.某种计算机的内存容量是640K,  这里的640K 容量是指(    ) 个字节.
A.640        B. 640*1000       C. 640 * 1024      D.640*1024*1024 

13.在Windows   9X中,菜单项后带有符号“…”,表示该菜单项(        ) .
A.可以进行开关选择                 B.执行时有对话框
C.有若干子命令                     D.不能执行

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

15.已知数组A中,每个元素A[I,J]在存贮时要占3个字节,设I从1变化到8,J从1变化到10,分配内存时是从地址SA开始连续按行存贮分配的。
试问:A[5,8]的起始地址为(      ).
    A.SA+141       B.SA+180         C.SA+222            D.SA+225

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

17.线性表若采用链表存贮结构,要求内存中可用存贮单元地址(     ).
A.必须连续                     B.部分地址必须连续
C.一定不连续                   D.连续不连续均可

18.下列叙述中,正确的是(     ).
A. 线性表的线性存贮结构优于链表存贮结构  
B. 队列的操作方式是先进后出
C. 栈的操作方式是先进先出
    D.二维数组是指它的每个数据元素为一个线性表的线性表

19.电线上停着两种鸟(A,B),可以看出两只相邻的鸟就将电线分为了一个线段。这些线段可分为两类:一类是两端的小鸟相同;另一类则是两端的小鸟不相同.
已知:电线两个顶点上正好停着相同的小鸟,试问两端为不同小鸟的线段数目一定是(    ).
     A.奇数          B.偶数        C.可奇可偶        D.数目固定



20.请仔細閱读下列程序段:
            PASCAL语言                               BASIC语言














    上列程序段的正确輸出是(    ).
     A.-1              B.-2           C.-3      D.-4    

二、问题解答(每题7分,共14分)
  1.已知,按中序遍历二叉树的结果为:abc
问:有多少种不同形态的二叉树可以得到这一遍历结果,并画出这些二叉树。
  
  2.有2×n的一个长方形方格,用一个1×2的骨牌铺满方格。例如n=3时,为2×3方格。
  此时用一个1×2的骨牌铺满方格,共有3种铺法:



 

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

三、阅读程序,并写出程序正确的运行结果(10+16分,共26分)
1.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
 输出:
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    输出


四、完善程序(每题15分,共30分)
1. 将2n个0和2n 个1,排成一圈。从任一个位置开始,每次按逆时针的方向以长度为n+1的单位进行数二进制数。
    要求给出一种排法,用上面的方法产生出来的2n+1个二进制数都不相同。
例如,当n=2时, 即22个0 和22个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统计二进制数是否已出现过。

程序清单
  PROGRAM NOI00;
VAR
   A             : ARRAY[1..36] OF  0..1;
       B             :ARRAY[0..31] OF  INTEGER;
       I, J, K, S, P : INTEGER;
  BEGIN
     FOR I:=1 TO 36 DO  A[I]:=0;
      FOR I:=28 TO 32 DO  A[I]:=1;
     P:=1; A[6]:=1;
     WHILE  (P=1)  DO
       BEGIN
         J:=27;
         WHILE  A[J]=1  DO  J:=J-1;
                 ①           
         FOR  I:=J+1 TO 27 DO         ②          
         FOR  I:=0  TO 31 DO  B[I]:=0;
         FOR  I:=1 TO 32 DO
          BEGIN
                    ③            
             FOR  K:=I  TO  I+4  DO  S:=S*2+A[K];
                      ④            
          END;
         S:=0;
         FOR  I:=0  TO 31 DO  S:=S+B[I];
         IF       ⑤            THEN  P:=0
        END;
     FOR  I:=1 TO 32 DO   FOR J:=I TO I+4 DO WRITE(A[J]);
  WRITELN
  END. 
2.多项式的乘法。
   例如有如下多项式:
         P(X)=2X2-X+1,   Q(X)=X+1
   则:
         P(X)•Q(X)=(2X2-X+1)(X+1)=2X3+X2+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)
程序清单
PROGRAM NOI_007;
  VAR 
        I, J, K, L , JP, JQ, JC, X, Y, X1, Y1  :  INTEGER;
        P, Q                       :  ARRAY[1..10,1..2]  OF  INTEGER;
        C                         :  ARRAY[1..20,1..2]  OF  INTEGER;
  BEGIN
    
    JP:=0;
    READLN(X,Y);
    
  WHILE X<>0 DO
      BEGIN   JP:=JP+1;  P[JP,1]:=X;  P[JP,2]:=Y;  READLN(X,Y)   END;
   
    JQ:=0;
READLN(X,Y);

    WHILE X<>0 DO
      BEGIN   JQ:=JQ+1;  Q[JQ,1]:=X;  Q[JQ,2]:=Y;  READLN(X,Y)   END;
     
     JC:=1;  C[JC,1]:=0;  C[JC,2]:=-1000;
     FOR  I:=1 TO JP DO
       BEGIN
                  ①               
      Y:=P[I,2];
          FOR  J:=1 TO JQ DO
            BEGIN
                        ②                   
       Y1:=Y+Q[J,2];
              K:=1;
              WHILE  Y1<C[K,2]  DO  K:=K+1;
              IF  Y1=C[K,2]  THEN           ③              
                             ELSE
                                 BEGIN
                                    FOR  L:=JC DOWNTO K DO
                                     BEGIN
                                       C[L+1,1]:=C[L,1]; 
                    C[L+1,2]:=C[L,2]
                                  END;
                           C[K,1]:=X1;  C[K,2]:=Y1;
                                   ④             
                       END
          END
      END;
    FOR  I:=1 TO JC DO
      IF       ⑤           THEN  WRITE(‘(’,C[I,1],‘,’,C[I,2],')');
    READLN
 END.
  

               赛区              市                   学校   姓名                


==========================  密    封    线  =======================

第六届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题

普及组答卷纸

           阅                卷                记                    录  
总阅卷人                                                     总 得 分
      第    一    大      题 得   分 第二大题得分
题号  1  2  3 4 5 6 7 8 9 10 第三大题得分
得分 (1) (2)
题号 11 12 13 14 15 16 17 18 19 20 第四大题得分
得分 (1) (2)

============================= 以下由考生填写 =============================
                                     
答卷部分

一、 选择一个正确答案代码(A/B/C/D),填入每题的括号内 (每题1.5分,多选无分,共30分)

题号   1   2   3   4   5   6   7   8   9  10
选择  
题号  11   12   13   14   15   16   17   18   19  20
选择


二、问题解答(共14分) 

  1. 答:有       种不同形态的二叉树可以得到这一遍历结果;               (2分)
         可画出的这些二叉树为:                                         (5分)






  
   2. 对给出的任意一个n(n>0),用F(N)表示其铺法的总数的递推公式为:      (7分)
         



               赛区              市                   学校   姓名                


==========================  密    封    线  =======================

三、阅读程序,并写出程序的正确运行结果(10+16分,共26分)
  
(1) 程序的运行结果是:  



(2)  程序的运行结果是:





四、根据题意,将程序补充完整(每个点3分,共30分)

     PASCAL语言                                  BASIC语言
=================             =================

题一
①                                  70                                  

②                          110                      

③                       140                 

④                          180                  

⑤                       220                 


题二
①                              190                                  

②                            240                     

③                      280                

④                     300                

⑤                                         350                





第六届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题普及组参考答案

一、选择一个正确答案代码(A/B/C/D),填入每题的括号内 (每题1.5分,多选无分,共30分)
题号   1  2   3   4   5   6   7   8   9  10
选择   C  B   B   B   B   D   C   D   D  B
题号  11  12   13   14   15   16   17   18   19  20
选择  D  C   B   B   A   C   D   D   B  A
二、问题解答(第1题的第1问2分,第2问5分,第2题7分,两题共14分) 
  1.答:有 5 种不同形态的二叉树可以得到这一遍历结果;可画出的这些二叉树为:
      ① a                ② b      ③   a        ④   c         ⑤  c
          \                /   \          \          /              /
            b            a      c           c      a              b
              \                            /        \            /
                c                       b             b        a
  
  2.对给出的任意一个n(n>0),用F(n)表示其铺法的总数的递推公式为:
       F(1)=1       F(2)=2       F(n)=F(n-2)+F(n-1)(n≥3)
三、阅读程序,并写出程序的正确运行结果(10+16分,共26分)
(1) 程序的运行结果是:  BBAC
(2) 程序的运行结果是:  ① 0.125
                      ② 0.{285714}
四、根据题意,将程序补充完整(每个点3分,共30分)
     PASCAL 语言                                  BASIC语言
=================         =================
题一
①    A[J]:=1;                              70     A(J) = 0

②    A[I]:=0;                         110   A(I) = 0

③    S:=0;                            140    S = 0

④    B[S]:=1;                         180    B(S) = 1

⑤     S=32                          220    S < 32

题二
①   X:=P[I,1];                           190     X * Q(J, 1)

②   X1:=X*Q[J,1];                    240    Y1 = C(K, 2)

③   C[K,1]:=C[K,1]+X1                  280   GOTO 320

④  JC:=JC+1                           300   C(K, 1) + X1

⑤ C[I,1]<>0                            350    C(I, 1) = 0
 
第七届全国青少年信息学(计算机)奥林匹克分区联赛试题(普及组PASCAL)
(普及组PASCAL语言 二小时完成)
一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题1.5分,多选无分,共30分)
1.在计算机内部,一切信息存取、处理和传递的形式是( )
 A)ASCII码 B)BCD码 C)二进制 D)十六进制
2.在树型目录结构中,不允许两个文件名相同主要指的是( )
 A)同一个磁盘的不同目录下  B)不同磁盘的同一个目录下
 C)不同磁盘的不同目录下   C)同一个磁盘的同一个目录下
3.WORD是一种( )
 A)操作系统 B)文字处理软件 C)多媒体制作软件 D)网络浏览器
4.计算机软件保护法是用来保护软件( )的。
 A)编写权  B)复制权  C)使用权  D)著作权
5.下面关于算法的错误说法是( )
 A)算法必须有输出  B)算法必须在计算机上用某种语言实现
 C)算法不一定有输入 D)算法必须在有限步执行后能结束
6.解释程序的功能是( )
 A)将高级语言程序转换为目标程序 B)将汇编语言程序转换为目标程序
 C)解释执行高级语言程序     D)解释执行汇编语言程序
7.与二进制数101.01011等值的十六进制数为( )
 A)A.B B)5.51 C)A.51 D)5.58
8.断电后计算机信息依然存在的部件为( )
 A)寄存器 B)RAM存储器 C)ROM存储 D)运算器
9.2KB的内存能存储( )个汉字的机内码
 A)1024  B)516  C)2048  D)218
10.DOS暂驻区中的程序主要是用于( ) 
 A)执行DOS内部命令 B)执行DOS外部命令
 C)执行DOS所有命令 D)基本输入输出
11.若我们说一个微机的CPU是用的PII300,此处的300确切指的是( )
 A)CPU的主时钟频率     B)CPU产品的系列号
 C)每秒执行300百万条指令  D)此种CPU允许最大内存容量
12.运算17 MOD 4的结果是( )
 A)7 B)3 C)1 D)4
13.应用软件和系统软件的相互关系是( )
 A)后者以前为基础 B)前者以后者为基础
 C)每一类都以另一类为基础 D)每一类都不以另一类为基础
14.以下对Windows的叙述中,正确的是( )
 A)从软盘上删除的文件和文件夹,不送到回收站
 B)在同一个文件夹中,可以创建两个同类、同名的文件
 C)删除了某个应用程序的快捷方式,将删除该应用程序对应的文件
 D)不能打开两个写字板应用程序
15.Email邮件本质上是一个( )
 A)文件  B)电报  C)电话  D)传真
16.计算机病毒是( )
 A)通过计算机传播的危害人体健康的一种病毒
 B)人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合
 C)一种由于计算机元器件老化而产生的对生态环境有害的物质
 D)利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒
17.下列设备哪一项不是计算机输入设备( )
 A)鼠标  B)扫描仪  C)数字化仪  D)绘图仪
18.在计算机硬件系统中,cache是( )存储器
 A)只读  B)可编程只读  C)可擦除可编程只读  D)高速缓冲
19.在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找12,所需的关键码比较的次数为( )
 A)2  B)3  C)4  D)5
20.若已知一个栈的入栈顺序是1,2,3,…,n,其输出序列为P1,P2,P3,…,Pn,若P1是n,则Pi是( )
 A)i  B)n-1  C)n-i+1  D)不确定
二、问题求解(5+7=12分)
1.在a,b,c,d,e,f六件物品中,按下面的条件能选出的物品是: 
 (1)a,b两样至少有一样
 (2)a,d不能同时取
 (3)a,e,f中必须有2样
 (4)b,c要么都选,要么都不选
 (5)c,d两样中选一样
 (6)若d不选,则e也不选
2.平面上有三条平行直线,每条直线上分别有7,5,6个点,且不同直线上三个点都不在同一条直线上。问用这些点为顶点,能组成多少个不同三角形?
三、阅读程序,写出正确的程序运行结果(5+8+9+9=31分)
1.PROGRAM CHU7_1;
FUNCTION FUN(X:INTEGER):INTEGER;
 BEGIN
  IF(X=0)OR(X=1)THEN FUN:=3
         ELSE FUN:=X-FUN(X-2)
 END;
BEGIN
 WRITELN(FUN(9));
 READLN;
END.
输出:
2.PROGRAM CHU7_2;
 VAR I,J,F:INTEGER;
     A:ARRAY[1..8]OF INTEGER;
 BEGIN
  FOR I:=1 TO 8 DO
   BEGIN
    F:=I MOD 2;
    IF F=0 THEN A[I]:=0
        ELSE A[I]:=1;
    FOR J:=1 TO I DO
     IF F=0 THEN A[I]:=A[I]+J
         ELSE A[I]:=A[I]*J
   END;
  FOR I:=1 TO 8 DO
   WRITE(A[I]:5);
END.
输出
3.PROGRAM CHU7_3;
 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;
  READLN
END.
输入:12
输出:
4.PRGORAM CHU7_4;
 VAR N,K,I:INTEGER;
   A:ARRAY[1..40]OF INTEGER;
 PROCEDURE FIND(X:INTEGER);
  VAR S,I1,J1:INTEGER;
      P:BOOLEAN;
  BEGIN
    I1:=0;
    P:=TRUE;
    WHILE P DO
     BEGIN
      I1:=I1+1;
      S:=0;
      FOR J1:=1 TO N DO 
       IF A[J1]>A[I1]THEN S:=S+1;
      IF(S=X-1)THEN
       BEGIN
        WRITELN(A[I1]);
        P:=FALSE
       END;
      END
     END;
  BEGIN
   READLN(N,K);
   FOR I:=1 TO N DO 
    READ(A[I]);
   FIND(K);
   FIND(N-K);
END.
输入:10 4
   12 34 5 65 67 87 7 90 120 13
输出:
四、完善程序(每空3分 共27分)
1.输入n个0到100之间的整数,由小到大排序输出,每行输出8个
 程序清单:
 PROGRAM CHU7_5;
  VAR I,J,K,N,X:INTEGER;
    B:ARRAY[0..100]OF INTEGER; 
 BEGIN
  READLN(N);
  FOR I:=0 TO 100 DO B[I]:=0;
 FOR I:=1 TO N DO 
  BEGIN
   READLN(X);
   B[X]:= ① 
  END;
   ② 
FOR I:=0 TO 100 DO
  WHILE ③ DO
   BEGIN
    WRITE( ④ );
    K:=K+1;
    B[I]:=B[I]-1;
    IF ⑤ THEN WRITELN
   END;
 READLN
END.
2.在A,B两个城市之间设有N个路站(如下图中的S1,且N<100),城市与路站之间、路站和路站之间各有若干条路段(各路段数≤20,且每条路段上的距离均为一个整数)。
 A,B的一条通路是指:从A出发,可经过任一路段到达S1,再从S1出发经过任一路段,…最后到达B。通路上路段距离之和称为通路距离(最大距离≤1000)。当所有的路段距离给出之后,求出所有不同距离的通路个数(相同距离仅记一次)。
 例如:下图所示是当N=1时的情况:
 
 从A到B的通路条数为6,但因其中通路5+5=4+6,所以满足条件的不同距离的通路条数为5。
 算法说明:本题采用穷举算法。
 数据结构:N:记录A,B间路站的个数
      数组D[I,0]记录第I-1到第I路站间路段的个数
        D[I,1],D[I,2],…记录每个路段距离
      数组G记录可取到的距离
程序清单:
PROGRAM CHU7_6;
 VAR I,J,N,S:INTEGER;
     B:ARRAY[0..100]OF INTEGER;
     D:ARRAY[0..100,0..20]OF INTEGER;
     G :ARRAY[0..1000]OF 0..1;
 BEGIN
  READLN(N);
  FOR I:=1 TO N+1 DO
   BEGIN
    READLN(D[I,0]);
    FOR J:=1 TO D[I,0]DO READLN(D[I,J]);
   END;
 D[0,0]:=1;
 FOR I:=1 TO N+1 DO B[I]:=1;
 B[0]:=0;
 FOR I:=0 TO 1000 DO G[I]:=0;
 WHILE ① DO
  BEGIN
   S:=0;
   FOR I:=1 TO N+1 DO 
  S:= ② 
    G[S]:=1;J:=N+1;
   WHILE  ③ DO J:=J-1;
   B[J]:=B[J]+1;
   FOR I:=J+1 TO N+1 DO   B[I]:=1;
  END;
 S:=0;
 FOR I:=1 TO 1000 DO
   ④ ;
 WRITELN(S);READLN;
END.
第七届全国青少年信息学(计算机)奥林匹克分区联赛试题(普及组参考答案)
  一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题1.5分,多选无分,共30分)
题号 1 2 3 4 5 6 7 8 9 10
选择 C D B D B C D C A A
题号 11 12 13 14 15 16 17 18 19 20
选择 A C B A A B C D C C
  二、问题解答(5+7分,两题共12分)
  1.答:在a,b,c,d,e,f六件物品中,按条件能选出的物品是:a,b,c,f
  2.答:用这些点为顶点,能组成751个不同三角形
  三、阅读程序,并写出程序的正确运行结果:(5+8+9+9分,共31分)
  (1)程序的运行结果是:S=1055
  (2)程序的运行结果是:1 3 6 10 120 21 5040 36
  (3)程序的运行结果是:181 110 87 76 66 62 61 60
  (4)程序的运行结果是:67 34
  四、根据题意,将程序补充完整(每个点3分,共30分)
 题一 
  ① 80 B(X)+1
  ② 110 100
 ③ 120 B(J)=0
  ④ 130 J;
 ⑤ 160 K MOD 8=0
  题二
  ① 130 B(0)<>0 
  ② 160 S+D(I,B(I))
  ③ 190 B(J)=D(J,0)
  ④ 240 S=S+G(I)
 
第八届全国青少年信息学奥林匹克联赛(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

二.问题求解: 
1. 如下图,有一个无穷大的的栈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.
 
 
第九届分区联赛普及组初赛试题
●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●  
 
一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分,共30分) 
  1.下列计算机设备中,既是输入设备,又是输出设备的是( )。 
    A)键盘 B)触摸屏 C)扫描仪 D)投影仪 E)数字化仪 
  2.下列分辨率的显示器所显示出的图像,最清晰的是( )。 
    A)800*600 B)1024*768 C)640*480 D)1280*1024 E)800*1000 
  3.下列说法中,正确的是( )。 
    A)在内存中,可执行程序用二进制码表示,源程序用八进制表示。
    B)程序和数据在内存中都是用二进制码表示的。
    C)内存中数据的存取是以二进制位为单位的。
    D)中央处理器CPU执行的每条指令的长度都不同。
    E)一般来说,在计算机内部,中文信息用十六进制表示,英文信息用八进制表示。 
  4.下列说法中,错误的是( )。 
    A)程序是指令的序列,它有三种结构:顺序、分支和循环。
    B)地址总线决定了中央处理器CPU所能访问的最大内存空间的大小。
    C)中央处理器CPU内部有寄存器组,用来存储数据。
    D)不同厂家生产的CPU所能处理的指令集不一定相同。
    E)数据传输过程中不可能会出错。 
  5.CPU访问内存的速度比访问下列哪个存储设备要慢( )。 
    A)寄存器 B)硬盘 C)软盘 D)磁带 E)光盘 
  6.下列电子邮件地址,正确的是( )。 
    A)wang@hotmail.com B)cai@jcc.pc.tool@rf.edu.jp
    C)162.105.111.22 D)ccf.edu.cn
    E)http://www.sina.com 
  7.数字图像文件可以用下列哪个软件来编辑( )。 
    A)画笔(Paintbrush) B)记事簿(Notepad) C)Recorder
    D)WinRAR E)MidiSoft 
  8.下列哪个软件不是操作系统软件的名字( )。 
    A)Windows XP B)DOS C)Linux D)OS/2 E)Arch/Info 
  9.下列哪个不是个人计算机的硬件组成部分( )。 
    A)主板 B)操作系统 C)电源 D)硬盘 E)软驱 
  10.图灵(Alan Turing)是( )。 
    A)美国人 B)英国人 C)德国人 D)匈牙利人 E)法国人 
  11.第一个给计算机写程序的人是( )。 
    A)Alan Mathison Turing
    B)Ada Lovelace
    C)John von Neumann
    D)John McCarthy
    E)Edsger Wybe Dijkstra 
  12.十进制数2003等值于二进制数( )。 
    A)11111010011 B)10000011 C)110000111 D)010000011l E)1111010011 
  13.运算式(2008)10-(3723)8的结果是( )。 
    A) (-1715)10 B) (5)10 C) (-5)16 D) (111)2 E) (3263)8 
  14.下列关于程序语言的叙述,不正确的是( )。 
    A)编写机器代码不比编写汇编代码容易。
    B)高级语言需要编译成目标代码或通过解释器解释后才能被CPU执行。
    C)同样一段高级语言程序通过不同的编译器可能产生不同的可执行程序。
    D)汇编代码可被CPU直接运行。
    E)不同的高级语言语法略有不同。 
  15.假设A=true,B=false,C=true,D=true,逻辑运算表达式A∧B∨C∧D的值是( )。 
    A)true B)false C)0 D)1 E)NULL 
  16.一个高度为h的二叉树最小元素数目是( )。 
    A)2h+l B)h C)2h-1 D)2h E)2h-l 
  17.已知队列(13,2,11,34,41,77,5,7,18,26,15),第一个进入队列的元素是13,则第五个出队列的元素是( )。 
    A)5 B)41 C)77 D)13 E)18 
  18.下列关于文件的叙述,不正确的是( )。 
    A)一个可执行程序其实也是一个文件。
    B)文件可大可小,大的文件一张软盘装不下。
    C)一个文件夹下面可以有两个同名的文件,只要它们的大小不同就行了。
    D)文件的创建日期和最新修改日期可以在资源管理器中看到。
    E)某些文件的内容可以用记事本(Notepad)看到。 
  19.活动硬盘的容量比固定硬盘的容量( )。 
    A)大 B)小 C)相等 D)不一定大 E)大致相等 
  20.IP地址是一个( )位二进制码。 
    A)8 B)16 C)32 D)64 E)12
二.问题求解(每题5分,共10分) 
  1.现在市场上有一款汽车A很热销,售价是2万美元。汽车A每加仑汽油可以行驶20英里。普通汽车每年大约行驶12000英里。油价是每加仑1美元。不久我公司就要推出新款节油汽车B,汽车B每加仑汽油可以行驶30英里。现在我们要为B制定价格(它的价格略高于A):我们预计如果用户能够在两年内通过节省油钱把B高出A的价钱弥补回来,则他们就会购买B,否则就不会购买B。那么B的最高价格应为    万美元。 
  2.无向图G有16条边,有3个4度顶点、4个3度顶点,其余顶点的度均小于3,则G至少有    个顶点。 
三.阅读程序(每题8分,共32分) 
1.program Programl;
  var
   a,x,y,okl,ok2:integer;
  begin
   a :=100:
   x:=l0;
   y:=20;
   okl:=5:
   ok2:=0;
   if ((x>y) or ((y<>20) and (okl=0)) and (ok2<>0)) then
    a:=1
   else if ((okl<>0) and (ok2=、0)) then
      a:=-1
     else
      a:=0;
   writeln(a);
  end. 
输出:     
2.program Program2;
  var
  a,t:string;
  i,j:integer;
  begin
  a:=`morning`;
  j:= l;

   for i:=2 to 7 do
    if (a[j]<a[i])then
     j:= i;
   j:= j-1;
   for i:=1 to j do
    write (a[i]);
  end. 
输出:     
3.program Program3;
  Var
   a,b,c,d,sum:longint;
  begin
   read (a,b,c,d);
   a:=a mod 23:
   b:=b mod 28;
   c:=c mod 33;
   sum:=a*5544+b* 14421+c*1288-d;
   sum:=sum+21252;
   sum:=sum mod 21252;
   if (sum=0)then
    sum:=21252;
   writeln(sum);
  end. 
输入:283 102 23 320 输出:     
4.program program4;
  var
  a: array[0..5] of integer;
  sum,n,max,i,j,k:integer;
  cover:array[0..22000]of boolean;
  begin
   read (a[5],a[4],a[3],a[2],a[1],a[0]);
   if ((a[5]=0) and (a[3]=0) and (a[1]=0)) then
   begin
   a[5]:=a[4];a[4]:=a[2]; a[3]:=a[0]; a[2]:=0 a[0]:=0;
   end:
   for i:=0 to 5 do
   if (a[i]>10) then a[i]:=10+(a[i] mod 2);
   sum:=0:
   for i:=0 to 5 do sum:=sum+a[i]*(6-i);
   if ((sum mod 2) <>0) then  begin
                  writeln(`Can``t be divided.`);
                  Exit;
                End;
   sum:=sum div 2; max:=0; cover[0]:=True;
   for i:=1 to sum*2 do cover[i]:=False;
   for i:=0 to 5 do
   begin
    j:=0;
    while (j<a[i])do
     begin
      for k:=max downto 0 do
       begin if (cover[k]) then cover[k+6-i]:=True;end;
     max:=max+6-i: j:=j+1;
     end;
   end;
   if (cover[sum]) then writeln (`Can be divided.`)
           else writeln(`can``t be divided.`);
  end. 
输入:4 7 9 20 56 48 输入:1000 7 101 20 55 1 输入:2000 5 l 1 0 0
输出:        输出:          输出:         
四、完善程序(第l空2分,其余每空3分共28分) 
  1.一元二次方程 
  题目描述: 
    方程ax^2+bx+c=0,要求给出它的实数解. 
  输 入: 
    三个实数:a,b,c,是方程的三个系数(a≠0). 
  输 出: 
    如果无实数解,则输出"No solution";
    如果有两个相等的实数解,则输出其中一个,四舍五入到小数点后面3位;
    如果有两个不等的实数解,则解与解之间用逗号隔开,同样要四舍五入到小数点后3位。 
  输入样例: 
      l 2 1 
  输出样例: 
      -1.000 
  程 序: 
    program Program41;
    var
     a,b,c,m:real;
    begin
     read (a,b,c);
     m:=b*b -4*a*c;
     if ( ① )then
      begin
       write ( ② :0:3);
       write( ` , ` );
       write ((-1*b-sqrt(m))/(2*a):0: ③ );
      end
      else if ( ④ )then
       write( ⑤ )
       else begin
          write (`No solution`);
          end
    end. 
  2.翻硬币 
  题目描述: 
  一摞硬币共有m枚,每一枚都是正面朝上。取下最上面的一枚硬币,将它翻面后放回原处。然后取下最上面的2枚硬币,将他们一起翻面后再放回原处。再取3枚,取4枚……直至m枚。然后再从这摞硬币最上面的一枚开始,重复刚才的做法。这样一直做下去,直到这摞硬币中的每一枚又都是正面朝上为止。例如,m为1时,翻两次即可。m为2时,翻3次即可;m为3时,翻9次即可;m为4时,翻11次即可;m为5时,翻24次即可;…;m为30时,翻899次即可;… 
  输 入: 
  仅有的一个数字是这摞硬币的枚数m,0<m<1000。 
  输 出: 
  为了使这摞硬币中的每一枚又都是正面朝上所必需翻的次数。 
  输入样例: 
      30 
  输出样例: 
      899 
  程 序: 
    program Programl;
    var m:integer;
     function solve (m:integer):integer;
     vat i,t,d:integer;
       flag:boolean;
     begin
      if (m=1)then
       so1ve:= ① 
      else begin
         d:=2*m+1;
         t:= 2;
         i:= 1;
         flag:=False;
         repeat
          if (t=1)then
           begin
            solve:= ② 
            flag:=True;
           end
          else if ( ③ )then
              begin
               solve:=i*m-1;
               flag:=True;
              end
             else
              t:= ④ ;
          i:=i+1;
         until flag;
        end
      end;
    begin
     read (m);
     if ((m>0) and (m<1000)) then
      writeln ( ⑤ );
    end.
第九届分区普及组初赛参考答案

一、 选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分,多选无分,共30分)
题号 1 2 3 4 5 6 7 8 9 10
选择 B D B E A A A E B B
题号 11 12 13 14 15 16 17 18 19 20
选择 B A B D A B B C D C

二.问题解答(每题5分,共10分) 
  1.答: 2.04
  2.答: 11 
三.阅读程序,并写出程序的正确运行结果: (每题8分,共32分) 
  (1)程序的运行结果是:-1
  (2)程序的运行结果是;mo
  (3)程序的运行结果是:8910
  (4)程序的运行结果是:Can't be divided  Can be divided  Can't be divided 
四.根据题意,将程序补充完整(第1空2分,其余每空3分 共28分) 
PASCAL语言
================= 
  题一
  ① m>0
  ② (-l*b+sqrt(m))/(2*a);
  ③ 3
  ④ ABS(M)<0.0001
  ⑤ -1*b/(2*a):0:3
  题二
  ① 2
  ② i*m
  ③ t=2*m
  ④ (t*2)mod d
  ⑤ solve(m) 
 

第十届全国青少年信息学奥林匹克联赛初赛试题
(普及组 Pascal语言 二小时完成)

一、选择一个正确答案代码(A/B/C/D/E)填入每题的挂号内
1.美籍匈牙利数学家 冯•诺依曼 对计算机科学发展所做出的贡献是:( )
   A、提出理想计算机数学模型,成为计算机科学理论基础
   B、是世界上第一个编写计算机程序的人
   C、提出存储程序工作原理,并设计出第一台具有存储程序功能的计算机EDVAC
   D、采用集成电路作为计算机的主要功能部件
   E、指出计算机性能将以每两年翻一番的速度向前发展
2.下列哪个不是CPU(中央处理单元)(  )
   A、Intel Itanium
   B、DDR SDRAM
   C、AMD Athlon64
   D、AMD Opteron
   E、IBM Power 5
3、下列网络中常用的名字缩写对应的中文解释错误的是( )
   A、WWW(World Wide Web):万维网
   B、URL(Uinform Resource Locator):统一资源定位器
   C、HTTP(Hypertext Transfer Protocol):超文本传输协议
   D、FTP  (File Transfer Protocol):快速传输协议
   E、TCP (Transfer Control Protocol):传输控制协议
4、下面哪个部件对于个人桌面电脑的正常运行不是必需的( )
   A、cpu
   B、显卡(图形卡)
   C、光驱
   D、主板
   E、内存
5、下列哪个软件属于操作系统软件( )
   A、Microsoft Word
   B、金山词霸
   C、Foxmail
   D、WinRAR
   E、Red Hat Linux
6、下列哪个不是计算机存储设备( )、
   A、文件管理器
   B、内存
   C、高速缓存
   D、硬盘
   E、U盘
7、下列说法中错误的是( )
   A、CPU的基本功能就是执行指令
   B、CPU访问内存的速度快于访问高速缓存的速度
   C、CPU的主频是指CPU在1秒内完成的指令周期数
   D、在一台计算机内部,一个内存地址编码对应唯一的一个内存单元
   E、数据中线的宽度决定了一次传递数据量的大小
8、彩色显示器所显示的五彩斑斓的色彩,是由红色,蓝色和( )色混合而成的
   A、紫色    B、白色   C、黑色   D、绿色   E、橙色
9、用静电吸附磨粉后转移到纸张上,是那种输出设备的工作方式( )
   A、针式打印机
   B、喷墨打印机
   C、激光打印机
   D、笔式绘图仪
   E、喷墨绘图仪
10、一台计算机如果要利用电话线上网,就必须配置能够对数字信号和模拟信号进行互相转换的设备,这种设备是( )
   A、调制解调器
   B、路由器
   C、网卡
   D、网关
   E、网桥
11、下列哪个不是数据库软件的名称( )
   A、MYSQL
   B、SQL Sever
   C、Oracle
   D、金山影霸
E、Foxpro
12、下列哪个程序设计语言不支持面向对象的程序设计方法( )
   A、C++
   B、Object Pascal
   C、C
   D、Smalltalk
   E、Java
13、由3个a,1个b和2个c构成的所有字符串中,包含子串“abc”的共有( )个
   A、20   B、8   C、16   D、12   E、24
14、某车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时该车站站台为空,从这一时刻开始出入记录为:“进出进进出进进进出出进出”。假设车辆入站的顺序为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
15、二叉树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
16、满二叉树的叶节点为N,则它的节点总数为( )
   A、N
   B、2N
   C、2N-1
   D、2N+1
   E、2^N-1
17、十进制2004等于八进制数( )
   A、3077
   B、3724
   C、2766
   D、4002
   E、3755
18、(2004)10 +(32)16的结果是( )
   A、(2036)10
   B、(2054)16
   C、(4006)10
   D、(100000000110)2
   E、(2036)16
19、在下图,从端点( )出发存在一条路径可以遍历图中的每条边一次,而且仅遍历一次











20、某大学计算机专业的必修课及期先修课程如下表所示:
课程
代号 C0 C1 C2 C3 C4 C5 C6 C7
课程
名称 高等
数学 程序
设计
语言 离散
数学 数据
结构 编译
技术 操作
系统 普通
物理 计算
机原

先修
课程 C0,C1 C1,C2 C3 C3,C7 C0 C6
请判断下列课程安排哪个是不合理的( )
   A、C0,C6,C7,C1,C2,C3,C4,C5
   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

二、问题求解(5分一题,共10分)
1、一个家具公司生产桌子和椅子。现有113个单位的木材。每张桌子要使用20个单位的木材,售价是30元;每张椅子要用16个单位的木材,售价是20元。使用已有的木材生产桌椅(不一定要用光木材)做多可以买_____元钱。
2、75名儿童去游乐场玩。他们可以骑旋转木马,坐滑行轨道,乘宇宙飞船。已知其中20人这三种东西都玩过,55人至少玩过其中两种。若每玩一样的费用为5元,游乐场总共收入700,可知有_____名儿童没有玩过其中任何一种。

三、阅读程序(8’一题,共32’)
1、------------------------------------------- 
program program1;
Var
  a,b,c,d,e:integer;
  begin
    a:=79 ; b:=34; c:=57;d:=0 ; e:=-1;
    if (a<c) or (b>c) then d:=d+e
    else if (d+10<e) then d:=e+10
    else d:=e-a;
    writeln(d);
  end.
输出:_____________________。
2、-------------------------------------------
program program2;
var
  i,j:integer;
  str1,str2:string;
begin
  str1:='pig-is-stupid';
  str2:='clever';
  str1[1]:='d'; str1[2]:='o';
  i:=8;
  for j:=1 to 6 do begin
      str1[i]:=str2[j];inc(i);
  end;
  writeln(str1);
end.
输出:_____________________。
3、-------------------------------------------
program program3;
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);
  read(a);
end.
输出:_____________________。
4、-------------------------------------------
program program4              ;
var c:array[1..2] 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],' ');
  read(i);
  end.
输出:_____________________。

四、完善程序(共28分)
1、三角形内切圆的面积
题目描述:给出三角形三边的边长,求此三角形内切圆的面积。
 
输入:三个正实数a、b、c(满足三角形三边关系),表示三角形三边边长。
输出:三角形内切圆的面积,结果四舍五入到小数点后2位
输入样例: 3 4 5
输出样例: 3.14
程序:①②③④⑤
PROGRAM PROGRAM1;
VAR
     A,B,C,R,S,T:REAL;
BEGIN
      READ(A,B,C);
       S :=(  ①  )/2;
       T:=  ②  (S*(S-A)*(S-B)*(S-C));
       R:=T/S;
       WRITELN(3.1415927 * R *  ③   :0:  ④  ;
END.

2..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 progaram1;
var
  i,k,m,start:longint;
  find:boolean;
function check(remain:integer):boolean;
var result:integer;
begin
  result:=____(1)____ mod remain;
  if ____(2)____ then begin
start:=result; check:=true;
  end
  else check:=false;
end;
begin
  find:=false;
  read(k);
  m:=k;
  while ____(3)____ do begin
find:=true; start;=0;
for i:=0 to k-1 do 
  if (not check(____(4)____)) then begin
     find:=false; break;
  end;
inc(m);
  end;
  writeln(____(5)____);
end.
参考答案
一、1.C   2.B    3.D    4.C      5.E     6.A    7.B      8.D  9.C  10.A   

11.D  12.C   13.D   14E  15.B  16.C  17.B  18.D  19.E  20.D 

二、1.160元              2.10人 

三、 1.-80       2.Dog-is-clever 

      3 . 263              4 .  1  12588  2   12337  3   12339 

四、  1 . a+b+c    SQRT  R   2 

    2 .  start+m-1    result>=k    not(find)   2*k-I   m-1
 

第十届全国青少年信息学奥林匹克联赛初赛试题
            ( 提高组  Pascal  语言  二小时完成 ) 

● ●  全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效  ●● 
 
一、 单项选择题 (共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. {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. 某大学计算机专业的必修课及其先修课程如下表所示:


课程代号 C0 C1 C2 C3 C4 C5 C6 C7
课程名称 高等数学 程序设计语言 离散数学 数据结构 编译技术 操作系统 普通物理 计算机原理
先修课程 C0, C1 C1, C2 C3 C3, C7 C0 C6

请你判断下列课程安排方案哪个(些)是合理的(  )。
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

三.问题求解(共2题,每题5分,共计10分)

1. 75名儿童到游乐场去玩。他们可以骑旋转木马,坐滑行铁道,乘宇宙飞船。已知其中20人这三种东西都玩过,55人至少玩过其中的两种。若每样乘坐一次的费用是5元,游乐场总共收入700,可知有    名儿童没有玩过其中任何一种。

2. 已知a, b, c, d, e, f, g七个人中,a会讲英语;b会讲英语和汉语;c会讲英语、意大利语和俄语;d会讲汉语和日语;e会讲意大利语和德语;f会讲俄语、日语和法语;g会讲德语和法语。能否将他们的座位安排在圆桌旁,使得每个人都能与他身边的人交谈?如果可以,请以“a b”开头写出你的安排方案:          。

四.阅读程序(共4题,每题8分,共计32分)

1.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
输出:             。

2.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
输出:             。

3.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
输出:             。

4.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分)

1.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.

2.逻辑游戏
题目描述:
一个同学给了我一个逻辑游戏。他给了我图1,在这个图上,每一段边界都已经进行了编号。我的任务是在图中画一条连续的曲线,使得这条曲线穿过每一个边界一次且仅穿过一次,而且曲线的起点和终点都在这整个区域的外面。这条曲线是容许自交的。
对于图1,我的同学告诉我画出这样的一条曲线(图2)是不可能的,但是对于有的图形(比如图3),画出这样一条曲线是可行的。对于给定的一个图,我想知道是否可以画出满足要求的曲线。
 
 

图1 图2
 
 
图3 图4
输入:
输入的图形用一个n×n的矩阵表示的。矩阵的每一个单元里有一个0到255之间(包括0和255)的整数。处于同一个区域的单元里的数相同,相邻区域的数不同(但是不相邻的区域里的数可能相同)。
输入的第一行是n(0<n<100)。以下的n行每行包括n个整数,分别给出对应的单元里的整数(这n个整数之间用空格分开)。图4给出了输入样例对应的图形。
输出:
当可以画出满足题意的曲线的时候,输出“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.

 

               赛区              市                   学校   姓名                


==========================  密    封    线  =======================

  第十届全国青少年信息学奥林匹克联赛初赛试题

                                   提高组答卷纸 
           阅                卷                记                    录  
总阅卷人                                                     总 得 分
      第    一    大      题 得   分 第三大题得分
题号  1  2  3 4 5 6 7 8 9 10 第四大题得分
得分 1) 2) 3) 4)
      第    二    大      题 得   分 第五大题得分
题号 11 12 13 14 15 16 17 18 19 20 (1) (2)
得分

============================  以下由考生填写 ============================
                                     
                                    答卷部分 
一. 单项选择题 (共10题,每题1.5分,共计15分。每题有且仅有一个正确答案.)。

题号   1   2   3   4   5   6   7   8   9  10
选择  

二.不定项选择题 (共10题,每题1.5分,共计15分。多选或少选均不得分)。

题号  11   12   13   14   15   16   17   18   19  20
选择

三.问题求解(共2题,每题5分,共计10分)

  1. 答:         
  
  2. 答:             

四. 阅读程序(共4题,每题8分,共计32分)
  
(1) 程序的运行结果是:  

(2)  程序的运行结果是:



               赛区              市                   学校   姓名                


==========================  密    封    线  =======================

四. 阅读程序(共4题,每题8分,共计32分)
  
(3) 程序的运行结果是:  



  (4)程序的运行结果是:



五. 完善程序 (前5空,每空2分,后6空,每空3分,共28分)

     Pascal 语言                                 
=================           
1.
(1) ________________________________
(2) ________________________________
(3) ________________________________
(4) ________________________________
(5) ________________________________
2.
(1) ________________________________
(2) ________________________________
(3) ________________________________
(4)________________________________
(5)________________________________
(6) ________________________________







 第十届全国青少年信息学奥林匹克联赛初赛试题
提高组参考答案 
一. 单项选择题 (共10题,每题1.5分,共计15分。每题有且仅有一个正确答案.)。
题号   1   2   3   4   5   6   7   8   9  10
选择   A   D   E   C   B   B   C   D   C  A

二.不定项选择题 (共10题,每题1.5分,共计15分。多选或少选均不得分)。
题号  11   12   13   14   15   16   17   18   19  20
选择   BC  ACDE   BCD   D   AC   BE   ADE  ACD  ABDE  BCE

三.问题求解(共2题,每题5分,共计10分)
1. 答:  10  
2. 答:  a b d f g e c   
四. 阅读程序(共4题,每题8分,共计32分)
(1)程序的运行结果是:  263
 (2) 程序的运行结果是:  328
  (3)程序的运行结果是:  1 4 2 1 3 3
(4)程序的运行结果是:  -400
五. 完善程序 (前5空,每空2分,后6空,每空3分,共28分)

    Pascal语言                                     
=================            
1.
(1)      start+m-1                                    
(2)      result>=k  (或者k<=result)                               
(3)     not find (或者 find=false)                              
(4)      2*k-i                             
(5)      m-1                                                    
2.
 (1)     0,-1
(2)    a[x-1,y-1]
(3)    a[x-1,y-1] 
(4)    d[2*i+1] 
(5)    a[x1,y1]=orig (或者orig=a[x1,y1])
(6)    orig:=a[i,j]
 
第十一届全国青少年信息学奥林匹克联赛初赛试题
( 普及组pascal&C 语言二小时完成)
●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●
由OIFans(www.OIFans.cn)整理
一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分, 共30分)
1. 在字符串“ababacbabcbdecced”中出现次数最多的字母出现了( )次。
A. 6 B. 5 C. 4 D. 3 E. 2
2. 设全集I = {a, b, c, d, e, f, g, h},集合A = {a, b, c, d, e, f},B = {c, d, e},C = {a, d},那
么集合C B A ~ Ç Ç 为( )。
A. {c, e} B. {d, e} C. {e} D. {c, d, e} E. {d, f}
3. 和十进制数23的值相等的二进制数是( )。
A. 10110 B. 11011 C. 11011 D. 10111 E. 10011
4. 完全二叉树的结点个数为11,则它的叶结点个数为( )。
A. 4 B.3 C.5 D. 2 E. 6
5. 平面上有五个点A(5, 3), B(3, 5), C(2, 1), D(3, 3), E(5, 1)。以这五点作为完全图G 的顶点,
每两点之间的直线距离是图G 中对应边的权值。以下哪条边不是图G 的最小生成树中
的边( )。
A. AD B. BD C. CD D. DE E. EA
6. Intel的首颗16 位处理器是( )。
A. 8088 B. 80386 C. 80486 D. 8086 E. Pentium
7. 处理器A 每秒处理的指令数是处理器B 的2 倍。某一特定程序P 分别编译为处理器A
和处理器B 的指令,编译结果处理器A 的指令数是处理器B 的4 倍。已知程序P 在处
理器A 上执行需要1 个小时,那么在输入相同的情况下,程序P 在处理器B 上执行需
要( )小时。
A. 4 B. 2 C. 1 D. 1 / 2 E. 1 / 4
8. 以下哪个不是计算机的输出设备( )。
A. 音箱B. 显示器C. 打印机D. 扫描仪E. 绘图仪
9. 下列活动中不属于信息学奥赛的系列活动的是( )。
A. NOIP B. NOI C. IOI D. 冬令营E. 程序员等级考试
10. 以下断电之后仍能保存数据的是( )。
A. 硬盘B. 寄存器C. 显存D. 内存E. 高速缓存
11. 以下哪个软件不是即时通信软件( )。
A. 网易泡泡B. MSN Messenger C. Google Talk D. 3DS Max E. QQ
12. 下列关于高级语言的说法错误的是( )。
A. Fortran是历史上的第一个面向科学计算的高级语言
B. Pascal和C都是编译执行的高级语言
C. C++是历史上的第一个支持面向对象的语言
D. 编译器将高级语言程序转变为目标代码
E. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上
13. 下列设备不具有计算功能的是( )。
A. 笔记本电脑B. 掌上电脑C. 智能手机
D. 电子计算器E. 液晶显示器
14. 常见的邮件传输服务器使用( )协议接收邮件。
A. HTTP B. SMTP C. TCP D. FTP E. POP3
15. 下列浏览器中,由微软公司开发的浏览器是( )。
A. Internet Explore B. Netscape C. Opera D. Firefox E. Mozilla
16. 一位艺术史学家有20000 幅真彩色图像,每幅图像约占3M空间。如果将这些图像以位
图形式保存在CD 光盘上(一张CD 光盘的容量按600M计算),大约需要( )张CD
光盘。
A. 1 B. 10 C. 100 D. 1000 E. 10000
17. 设A = true,B = false,C = false,D = true,以下逻辑运算表达式值为真的是( )。
A. (A B ∧ )∨(C D ∧ ) B. ((A B ∧ ) C ∨ ) D ∧ C. A∧((B C ∨ ) D ∧ )
D. (A∧(B C ∨ )) D ∨ E. (A B ∨ )∧(C D ∧ )
18. (3725)8 + (B)16的运算结果是( )。
A. (3736)8 B. (2016)10 C. (1111110000)2 D. (3006)10 E. (7B0)16
19. 二叉树T的宽度优先遍历序列为A B C D E F G H I,已知A是C的父结点,D 是G 的
父结点,F 是I 的父结点,树中所有结点的最大深度为3(根结点深度设为0),可知F
的父结点是( )。
A. 无法确定B. B C. C D. D E. E
20. 设栈S的初始状态为空,元素a, b, c, d, e, f, g依次入栈,以下出栈序列不可能出现的是
( )。
A. a, b, c, e, d, f, g B. b, c, a, f, e, g, d C. a, e, d, c, b, f, g
D. d, c, f, e, b, a, g E. g, e, f, d, c, b, a

二.问题求解(请在空格处填上答案,每空5分,共10分)
1. 将数组{32, 74, 25, 53, 28, 43, 86, 47}中的元素按从小到大的顺序排列,每次可以交换任
意两个元素,最少需要交换次。
2. 有3 个课外小组:物理组,化学组和生物组。今有张、王、李、赵、陈5 名同学,已知
张、王为物理组成员,张、李、赵为化学组成员,李、赵、陈为生物组成员。如果要在
3 个小组中分别选出3 位组长,一位同学最多只能担任一个小组的组长,共有种
选择方案。

三.阅读程序(共4题,每题8分,共计32 分)
==================PASCAL语言==================
1. var
a, b : integer;
begin
read(a);
b := (a * (a * a)) + 1;
if b mod 3 = 0 then b := b div 3;
if b mod 5 = 0 then b := b div 5;
if b mod 7 = 0 then b := b div 7;
if b mod 9 = 0 then b := b div 9;
if b mod 11 = 0 then b := b div 11;
if b mod 13 = 0 then b := b div 13;
if b mod 15 = 0 then b := b div 15;
writeln((100 * a - b) div 2);
end.
输入:10
输出:
2. var
str : string;
i : integer;
begin
str := 'Today-is-terrible!';
for i := 7 to 11 do
if str = '-' then str[i - 1] := 'x';
for i := 13 downto 1 do
if str = 't' then str[i + 1] := 'e';
writeln(str);
end.
输出:
3. var
a, b, c, p, q : integer;
r : array[0..2] of integer;
begin
read(a, b, c);
p := a div b div c;
q := b - c + a + p;
r[0] := a * p div q * q;
r[1] := r[0] * (r[0] - 300);
if (3 * q - p mod 3 <= r[0]) and (r[2] = r[2]) then
r[1] := r[r[0] div p mod 2]
else r[1] := q mod p;
writeln(r[0] - r[1]);
end.
输入:100 7 3
输出:
4. var
str : string;
len, i, j : integer;
nchr : array [0..25] of integer;
mmin : char;
begin
mmin := 'z';
readln(str); len := length(str);
i := len;
while i >= 2 do begin
if str[i - 1] < str then break; dec(i);
end;
if i = 1 then begin
writeln('No result!'); exit;
end;
for j := 1 to i - 2 do write(str[j]);
fillchar(nchr, sizeof(nchr), 0);
for j := i to len do begin
if (str[j] > str[i - 1]) and (str[j] < mmin) then
mmin := str[j];
inc(nchr[ord(str[j]) - ord('a')]);
end;
dec(nchr[ord(mmin) - ord('a')]);
inc(nchr[ord(str[i - 1]) - ord('a')]);
write(mmin);
for i := 0 to 25 do
for j := 1 to nchr do
write(chr(i + ord('a')));
writeln;
end.
输入:zzyzcccbbbaaa
输出:
==================C语言==================
1. #include <stdio.h>
int main() {
int a, b;
scanf(“%d”, &a);
b = (a * (a * a)) + 1;
if (b%3 == 0) b = b / 3;
if (b%5 == 0) b = b / 5;
if (b%7 == 0) b = b / 7;
if (b%9 == 0) b = b / 9;
if (b%11 == 0) b = b / 11;
if (b%13 == 0) b = b / 13;
if (b%15 == 0) b = b / 15;
printf(“%d \n”, (100 * a – b) / 2);
return 0;
}
输入:10
输出:
2. #include <stdio.h>
int main() {
char str[20] = “Today-is-terrible!”;
int i;
for (i = 6; i <= 10; i++)
if (str == ‘-‘) str[i – 1] = ‘x‘;
for (i = 12; i >= 0; i--)
if (str == ‘t’) str[i + 1] = ‘e’;
printf(“%s\n”, str);
return 0;
}
输出:
3. #include <stdio.h>
int main() {
int a, b, c, p, q, r[3];
scanf(“%d%d%d”, &a, &b, &c);
p = a / b / c;
q = b – c + a + p;
r[0] = a * p / q * q;
r[1] = r[0] * (r[0] – 300);
if (3 * q – p % 3 <= r[0] && r[2] == r[2])
r[1] = r[r[0] / p % 2];
else
r[1] = q % p;
printf(“%d\n”, r[0] – r[1]);
return 0;
}
输入:100 7 3
输出:
4. #include<stdio.h>
#include<string.h>
int main(){
char str[60];
int len, i, j, chr[26];
char mmin = 'z';
scanf("%s", str);
len = strlen(str);
for (i = len - 1; i >= 1; i--)
if (str[i - 1] < str) break;
if (i == 0) {
printf("No result!\n"); return 0;
}
for (j = 0; j < i - 1; j++) putchar(str[j]);
memset(chr, 0, sizeof(chr));
for (j = i; j < len; j++) {
if (str[j] > str[i - 1] && str[j] < mmin)
mmin = str[j];
chr[str[j] - 'a']++;
}
chr[mmin - 'a']--;
chr[str[i - 1] - 'a']++;
putchar(mmin);
for(i = 0; i < 26; i++)
for(j = 0; j < chr; j++)
putchar(i + 'a');
putchar('\n');
return 0;
}
输入:zzyzcccbbbaaa
输出:
 

四.完善程序(前4空,每空2分,后5空,每空4分,共28分)
==================PASCAL语言==================
1.判断质数
题目描述:
给出一个正整数,判断这个数是否是质数。
输入:
一个正整数n(1 ≤ n ≤ 10000)。
输出:
如果n是质数,输出”YES”;否则,输出”NO”。
输入样例:
10
输出样例:
NO
程序:
var
① : integer;
begin
read(n);
if n = 2 then writeln( ② )
else if ( ③ ) or (n mod 2 = 0) then writeln('NO')
else begin
i := 3;
while i * i <= n do begin
if ④ then begin
writeln('NO'); exit;
end;
i := i + 2;
end;
writeln('YES');
end;
end.
2.木材加工
题目描述:
木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有
剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段越长越好,你的任务
是计算能够得到的小段木头的最大长度。木头长度的单位是cm。原木的长度都是正整数,
我们要求切割得到的小段木头的长度也是正整数。
输入:
第一行是两个正整数N和K(1 ≤ N ≤ 10000,1 ≤ K ≤ 10000),N是原木的数目,
K是需要得到的小段的数目。
接下来的N行,每行有一个1到10000之间的正整数,表示一根原木的长度。
输出:
输出能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出”0”。
输入样例:
3 7
232
124
456
输出样例:
114
程序:
var
n, k : integer;
len : array [1..10000] of integer;
i, left, right, mid : integer;
function isok(t : integer) : boolean;
var
num, i : integer;
begin
num := 0;
for i := 1 to n do begin
if num >= k then break;
num := ① ;
end;
if ② then isok := true
else isok := false;
end;
begin
readln(n, k);
right := 0;
for i := 1 to n do begin
readln(len);
if right < len then right := len;
end;
inc(right); ③ ;
while ④ < right do begin
mid := (left + right) div 2;
if ⑤ then right := mid
else left := mid;
end;
writeln(left);
end.
==================C语言==================
1.判断质数
题目描述:
给出一个正整数,判断这个数是否是质数。
输入:
一个正整数n(1 ≤ n ≤ 10000)。
输出:
如果n是质数,输出”YES”;否则,输出”NO”。
输入样例:
10
输出样例:
NO
程序:
#include <stdio.h>
int main() {
int ① ;
scanf("%d", &n);
if (n == 2) puts( ② );
else if ( ③ || n % 2 == 0) puts("NO");
else {
i = 3;
while (i * i <= n) {
if ( ④ ) {
puts("NO"); return 0;
}
i = i + 2;
}
puts("YES");
}
return 0;
}
2.木材加工
题目描述:
木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小
段的数目是给定的。当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段
木头的最大长度。
木头长度的单位是cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度
也是正整数。
输入:
第一行是两个正整数N和K(1 ≤ N ≤ 10000,1 ≤ K ≤ 10000),N是原木的数目,
K是需要得到的小段的数目。
接下来的N行,每行有一个1到10000之间的正整数,表示一根原木的长度。
输出:
输出能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出”0”。
输入样例:
3 7
232
124
456
输出样例:
114
程序:
#include <stdio.h>
int n, k, len[10000];
int isok(int t) {
int num = 0, i;
for (i = 0; i < n; i++) {
if (num >= k) break;
num = ① ;
}
if ( ② ) return 1;
else return 0;
}
int main() {
int i, left, right, mid;
scanf("%d%d", &n, &k);
right = 0;
for (i = 0; i < n; i++) {
scanf("%d", &(len));
if (right < len) right = len;
}
right++;
③ ;
while ( ④ < right) {
mid = (left + right) / 2;
if ( ⑤ ) right = mid;
else left = mid;
}
printf ("%d\n", left);
return 0;

 

第十一届全国青少年信息学奥林匹克联赛初赛试题普及组(P&C)参考答案 
 
由OIFans(www.OIFans.cn)整理

 
一. 选择一个正确答案代码(A/B/C/D/E),填入每题的括号内 (每题1.5分,多选无分, 共30 分)
题号   1   2   3   4   5   6   7   8   9  10
选择 B A  D E D   D  D   D   E  A
题号  11   12   13   14   15   16   17   18   19  20
选择   D    C    E   E   A   C   D   B   C  E
 
二.问题解答 (每题5分,共10分) 
  1. 答:     5     
  2. 答:  11   
 
三. 阅读程序,并写出程序的正确运行结果:(每题8分,共32分)
(1) 程序的运行结果是:  499
(2) 程序的运行结果是:  Today-ix-terrible!
(3) 程序的运行结果是:  -7452
(4) 程序的运行结果是:  zzzaaabbbcccy
 
四.根据题意, 将程序补充完整 (前4空,每空2分,后5空,每空4分,共28分)
 
     pascal 语言                                 
=================             
1.
 
①     n, i  (或者 i, n)                              
 
②              'YES'                           
 
③      n = 1  (或者 n – 1 = 0)                           
 
④      n mod i = 0                                       
 
2.
 
①      num + len[i] div t                               
 
②     num >= k                       
 
③     left := 0
 
④      left + 1
 
⑤      not isok(mid) (或者 isok(mid) = false)

 
 
 
     C 语言                                 
=================             
1.
 
①     n, i (或者 i, n)                              
 
②              'YES'                           
 
③      n == 1 (或者 n – 1 == 0)                             
 
④      n % i == 0  (或者 !n % i)                                     
 
2.
 
①      num + len[i] / t                               
 
②     num >= k                        
 
③     left = 0   
 
④      left + 1                        
 
⑤     !isok(mid)  (或者 isok(mid) == 0)

 
第十二届全国青少年信息学奥林匹克联赛初赛试题 
( 普及组 Pascal 语言 二小时完成 ) 
● ● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●
一、 单项选择题 (共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)。 
1. 在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是( )。 
A. 沃尔夫奖 B. 诺贝尔奖 C. 菲尔兹奖 D. 图灵奖 
2. 在下列各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境有( )。 
A. gcc/g++ B. Turbo Pascal 
C. RHIDE D. free pascal 
3. 以下断电之后仍能保存数据的有( )。 
A. 寄存器 B. ROM C. RAM D. 高速缓存 
4.Linux是一种( )。 
A. 绘图软件 B. 程序设计语言 C. 操作系统 D. 网络浏览器 
5. CPU是( )的简称。 
A. 硬盘 B. 中央处理器 C. 高级程序语言 D. 核心寄存器 
6. 在计算机中,防火墙的作用是( )。 
A. 防止火灾蔓延 B.防止网络攻击 
C. 防止计算机死机 D. 防止使用者误删除数据 
7. 在下列关于计算机语言的说法中,不正确的是( )。 
A. Pascal和C都是编译执行的高级语言 
B. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上 
C. C++是历史上的第一个支持面向对象的计算机语言 
D. 与汇编语言相比,高级语言程序更容易阅读 
8. 在下列关于计算机算法的说法中,不正确的是( )。 
A. 一个正确的算法至少要有一个输入 
B. 算法的改进,在很大程度上推动了计算机科学与技术的进步 
C. 判断一个算法的好坏的主要标准是算法的时间复杂性与空间复杂性 
D. 目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效算法 
9. 在下列各种排序算法中,不是以"比较"作为主要操作的算法是( )。 
A. 选择排序 B. 冒泡排序 C. 插入排序 D. 基数排序 
10.在编程时(使用任一种高级语言,不一定是Pascal),如果需要从磁盘文件中输入一个很大的二维数组(例如1000*1000的double型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上( )。 
A. 没有区别 B. 按行读的方式要高一些 
C. 按列读的方式要高一些 D. 取决于数组的存储方式。 
11.在Pascal语言中,表达式 (21 xor 2)的值是( ) 
A. 441 B. 42 C.23 D.24 
12.在Pascal语言中,判断a不等于0且b不等于0的正确的条件表达式是( ) 
A. not a=0 or not b=0 B. not((a=0)and(b=0)) 
C. not(a=0 and b=0) D. (a<>0)and (b<>0) 
13.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入记录为:"进,出,进,进,进,出,出,进,进,进,出,出"。假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为( )。 
A. 1, 2, 3, 4, 5 B. 1, 2, 4, 5, 7 
C. 1, 4, 3, 7, 6 D. 1, 4, 3, 7, 2 
14.高度为n的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为( )。 
A. 10 B. 11 C. 12 D. 13 
15. 与十进制数1770 对应的八进制数是( )。 
A. 3350 B. 3351 C. 3352 D. 3540 
16.将5个数的序列排序,不论原先的顺序如何,最少都可以通过( )次比较,完成从小到大的排序。 
A. 6 B. 7 C. 8 D. 9 
17. 设A=B=D=true,C=false,以下逻辑运算表达式值为真的有( )。 
A. (A∧B)∨(C∧D) B. ((A∨B∨D)∧C) 
C. A∧(B∨C∨D) D. (A∧B∧C)∨ D 
18. (2010)16 + (32)8的结果是( )。 
A. (8234)10 B. (202B)16 
C. (20056)8 D. (100000000110)2 
19. 设栈S的初始状态为空,元素a, b, c, d, e 依次入栈,以下出栈序列不可能出现的有( )。 
A. a, b, c, e, d B. b, c, a, e, d 
C. a, e, c, b, d D. d, c, e, b, a 
20. 已知6个结点的二叉树的先根遍历是1 2 3 4 5 6(数字为结点的编号,以下同),后根遍历是3 2 5 6 4 1,则该二叉树的可能的中根遍历是( ) 
A. 3 2 1 4 6 5 B. 3 2 1 5 4 6 
C. 2 1 3 5 4 6 D. 2 3 1 4 6 5 
二.问题求解(共2题,每题5分,共计10分) 
1.(寻找假币) 现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,最少需要称几次,就可以找出假币?你还要指出第1次的称重方法。请写出你的结果:_________________________________________________。 
2.(取石子游戏) 现有5堆石子,石子数依次为3,5,7,19,50,甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取), 取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无论乙怎样取,甲只要不失误,都能获胜)?如果有,甲第一步应该在哪一堆里取多少?请写出你的结果: 
_________________________________________________。 
三.阅读程序写结果(共4题,每题8分,共计32分) 
1. Program ex301; 
var 
u:array[0..3] of integer; 
i,a,b,x,y:integer; 
begin 
y:=10; 
for i:=0 to 3 do 
read(u[i]); 
a:=(u[0]+u[1]+u[2]+u[3]) div 7; 
b:=u[0] div ((u[1]-u[2]) div u[3]); 
x:=(u[0]+a+2)-u[(u[3]+3) mod 4]; 
if (x>10) then 
y:=y+(b*100-u[3]) div (u[u[0] mod 3]*5) 
else 
y:=y+20+(b*100-u[3]) div (u[u[0] mod 3]*5); 
writeln (x,',',y); 
end. {*注:本例中,给定的输入数据可以避免分母为0或下标越界。 } 
输入:9 3 9 4 
输出:_______________ 
2.Program ex302; 
const 
m:array[0..4] of integer=(2,3,5,7,13); 
var 
i,j:integer; 
t: longint; 
begin 
for i:=0 to 4 do 
begin 
t:=1; 
for j:=1 to m[i]-1 do 
t:=t*2; 
t:=(t*2-1)*t; 
write (t,' '); 
end; 
writeln; 
end. 
输出:____________________ 
3.Program ex303; 
Const 
NN=7; 
Type 
Arr1=array[0..30] of char; 
var 
s:arr1; 
k,p:integer; 
Function fun(s:arr1; a:char;n:integer):integer; 
var 
j:integer; 
begin 
j:=n; 
while (a<s[j])and(j>0) do dec(j); 
fun:=j; 
end; 
begin 
for k:=1 to NN do 
s[k]:=chr(ord('A')+2*k+1); 
k:=fun(s,'M',NN); 
writeln(k); 
end. 
输出:_____________ 
4.program ex304; 
var 
x,x2:longint; 
procedure digit(n,m:longint); 
var n2:integer; 
begin 
if(m>0) then 
begin 
n2:=n mod 10; 
write(n2:2); 
if(m>1) then digit(n div 10,m div 10); 
n2:=n mod 10; 
write(n2:2); 
end; 
end; 
begin 
writeln('Input a number:'); 
readln(x); 
x2:=1; 
while(x2<x) do x2:=x2*10; 
x2:=x2 div 10; 
digit(x,x2); 
writeln; 5
end. 
输入:9734526 
输出:______________________________ 
四.完善程序 (前4空,每空2.5分,后6空,每空3分,共28分) 
1.(全排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数的全部可能的排列(不一定按升序输出)。例如,输入3,则应该输出(每行输出5个排列): 
123 132 213 231 321 
312 
程序: 
Program ex401; 
Var 
i,n,k:integer; 
a:array[1..10] of integer; 
count:longint; {变量count记录不同排列的个数,这里用于控制换行} 
Procedure perm(k:integer); 
var j,p,t:integer; 
begin 
if ① then 
begin 
inc(count); 
for p:=1 to k do 
write(a[p]:1); 
write(' '); 
if ( ② ) then writeln; 
exit; 
end; 
for j:=k to n do 
begin 
t:=a[k]; a[k]:=a[j]; a[j]:=t; 
③ ; 
t:=a[k]; ④ ; 
end 
end; 
begin 
writeln('Entry n:'); 
read(n); 
count:=0; 
for i:=1 to n do a[i]:=i; 
⑤ ; 
end. 
2. 由键盘输入一个奇数 P (P<100,000,000),其个位数字不是5,求一个整数 S,使 P×S = 1111...1 ( 在给定的条件下,解 S 必存在)。要求在屏幕上依次输出以下结果: 
(1)S 的全部数字。除最后一行外,每行输出 50 位数字。 (2) 乘积的数字位数。 
例1:输入p=13,由于13*8547=111111,则应输出(1)8547,(2)6 
例2:输入p=147,则输出结果应为(1)755857898715041572184429327286470143613 
(2)42,即等式的右端有42个1。 
程序: 
program ex402; 
var 
p,a,b,c,t,n:longint; 
begin 
while (true) do 
begin 
writeln ('Input p, the last digit is 1 or 3 or 7 or 9:'); 
readln(p); 
if (p mod 2<>0)and(p mod 5<>0) then 
⑥ ; {如果输入的数符合要求,结束循环 } 
end; 
a:=0; n:=0; 
while (a<p) do 
begin 
a:=a*10+1; inc(n); 
end; 
t:=0; 
repeat 
b:=a div p; 
write(b:1); 
inc(t); 
if ( ⑦ ) then writeln; 
c:= ⑧ ; a:= ⑨ inc(n); 
until c<=0; 
dec(n); 
writeln; writeln('n=', ⑩ ); 
end. 
 

 
 
普及组(Pascal语言)参考答案与评分标准 
一、单项选择题:(每题1.5分) 
1. D 2. B 3. B 4. C 5. B 6.B 7. C 8. A 9. D 10. D 
11. C 12. D 13. C 14. B 15. C 16. B 17. B 18. A 19. C 20. B 
二、问题求解:(每题 5分) 
1. 4次 (1分), 
第一步:分成3组:27,27,26,将前2组放到天平上(4分)。 
2.有获胜策略(1分),,第1次在第5堆中取32颗石子(4分),。 
三、阅读程序写结果 
1. 10,10 (对1个数给4分,无逗号扣1分) 
2. 6 28 496 8128 33550336 
(前2个对1个数给1分,后3个对1个数给2分) 
3. 5 
4. 6 2 5 4 3 7 9 9 7 3 4 5 2 6(数字之间无空格扣2分) 
四、完善程序(前4空(①--④),每空2.5分,后6空(⑤--⑩),每空3分) 
1.① k=n (或n=k) 
② count mod 5=0 
③ perm(k+1) 
④ a[k]:=a[j];a[j]:=t 
⑤ perm(1) 
2.⑥ break 
⑦ t mod 50=0 
⑧ a-p*b(或a-b*p) 
⑨ c*10+1 (或10*c+1) 
⑩ n
 
NOIP2007普及组初赛试题+答案
第十三届全国青少年信息学奥林匹克联赛初赛试题
( 普及组 Pascal 语言 二小时完成)
● ● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●

一、 单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确答案。)

1. 在以下各项中,( )不是CPU的组成部分。
A.控制器 B.运算器 C.寄存器 D.主板

2.在关系数据库中,存放在数据库中的数据的逻辑结构以( )为主。
A.二叉树 B.多叉树 C.哈希表 D.二维表

3.在下列各项中,只有( )不是计算机存储容量的常用单位。
A.Byte B.KB C.UB D.TB

4.ASCII码的含义是( )。
A.二→十进制转换码 B.美国信息交换标准代码 
C.数字的二进制编码 D.计算机可处理字符的唯一编码

5.一个完整的计算机系统应包括( )。
A.系统硬件和系统软件 B.硬件系统和软件系统 
C.主机和外部设备 D.主机、键盘、显示器和辅助存储器

6.IT的含义是( )。
A.通信技术 B.信息技术 C.网络技术 D.信息学

7.LAN的含义是( )。
A.因特网 B.局域网 C.广域网 D.城域网

8.冗余数据是指可以由其它数据导出的数据。例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。冗余数据往往会造成数据的不一致。例如,上面4个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。下面关于冗余数据的说法中,正确的是( )。
A.应该在数据库中消除一切冗余数据
B.用高级语言编写的数据处理系统,通常比用关系数据库编写的系统更容易消除冗余数据
C.为了提高查询效率,在数据库中可以保留一些冗余数据,但更新时要做相容性检验
D.做相容性检验会降低效率,可以不理睬数据库中的冗余数据

9.在下列各软件,不属于NOIP竞赛(复赛)推荐使用的语言环境有( )。
A.gcc B.g++ C.Turbo C D.Free Pascal

10.以下断电后仍能保存数据的有( )。
A.硬盘 B.高速缓存 C.显存 D.RAM
11.在下列关于计算机语言的说法中,正确的有( )。
A.高级语言比汇编语言更高级,是因为它的程序的运行效率更高
B.随着Pascal、C等高级语言的出现,机器语言和汇编语言已经退出了历史舞台
C.高级语言比汇编语言程序更容易从一种计算机上移植到另一种计算机上
D.C是一种面向对象的高级计算机语言

12.近20年来,许多计算机专家都大力推崇递归算法,认为它是解决较复杂问题的强有力的工具。在下列关于递归算法的说法中,正确的是( )。
A.在1977年前后形成标准的计算机高级语言“FORTRAN77”禁止在程序使用递归,原因之一是该方法可能会占用更多的内存空间
B.和非递归算法相比,解决同一个问题,递归算法一般运行得更快一些
C.对于较复杂的问题,用递归方式编程一般比非递归方式更难一些
D.对于已经定义好的标准数学函数 sin(x),应用程序中的语句“y=sin(sin(x));”就是一种递归调用

13.一个无法靠自身的控制终止的循环成为“死循环”,例如,在C语言程序中,语句“while(1) printf(“*”);”就是一个死循环,运行时它将无休止地打印*号。下面关于死循环的说法中,只有( )是正确的。
A.不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环,因而,任何编译系统都不做死循环检查
B.有些编译系统可以检测出死循环
C.死循环属于语法错误,既然编译系统能检查各种语法错误,当然也应该能检查出死循环
D.死循环与多进程中出现的“死锁”差不多,而死锁是可以检测的,因而,死循环也可以检测的

14.在Pascal语言中,表达式 (23 or 2 xor 5)的值是( )。
A.18 B.1 C.23 D.32

15.在Pascal语言中,判断整数a等于0或b等于0或c等于0的正确的条件表达式是( )。
A.not ((a<>0) or (b<>0) or (c<>0))
B.not ((a<>0) and (b<>0) and (c<>0))
C.not ((a=0) and (b=0)) or (c<>0)
D.(a=0) and (b=0) and (c=0)

16.地面上有标号为A、B、C的三根柱,在A柱上放有10个直径相同中间有孔的圆盘,从上到下依次编号为1,2,3……,将A柱上的部分盘子经过B柱移入C柱,也可以在B柱上暂存。如果B柱上的操作记录为“进、进、出、进、进、出、出、进、进、出、进、出、出”。那么,在C柱上,从下到上的编号为( )。
A.2 4 3 6 5 7 B.2 4 1 2 5 7 C.2 4 3 1 7 6 D.2 4 3 6 7 5

17.与十进制数1770对应的八进制数是( )。
A.3350 B.3351 C.3352 D.3540


18.设A=B=True,C=D=False,一下逻辑运算表达式值为假的有( )。
A.(﹁A∧B)∨(C∧D∨A) B.﹁(((A∧B)∨C)∧D) 
C.A∧(B∨C∨D)∨D D.(A∧(D∨C))∧B

19.(2070)16 + (34)8 的结果是( )。
A.(8332)10 B.(208A)16 C.(100000000110)2 D.(20212)8

20.已知7个节点的二叉树的先根遍历是1 2 4 5 6 3 7(数字为节点的编号,以下同),中根遍历是4 2 6 5 1 7 3,则该二叉树的后根遍历是( )。
A.4 6 5 2 7 3 1 B.4 6 5 2 1 3 7 C.4 2 3 1 5 4 7 D.4 6 5 3 1 7 2

二、问题求解(共2题,每题5分,共计10分)。

1、(子集划分)将n个数(1,2,…,n)划分成r个子集。每个数都恰好属于一个子集,任何两个不同的子集没有共同的数,也没有空集。将不同划分方法的总数记为S(n,r)。例如,S(4,2)=7,这7种不同的划分方法依次为{(1),(234)},{(2),(134)},{(3),(124)},{(4),(123)},{(12),(34)},{(13),(24)},{(14),(23)}。当n=6,r=3时,S(6,3)=______________。
(提示:先固定一个数,对于其余的5个数考虑S(5,3)与S(5,2),再分这两种情况对原固定的数进行分析。)

2、(最短路线)某城市的街道是一个很规整的矩形网络(见下图),有7条南北向的纵街,5条东西向的横街。现要从西南角的A走到东北角的B,最短的走法共有多少种?___________
(图画不了)
三、阅读程序写结果(共4题,每题8分,共计32分。)
1、program j301;
var i,a,b,c,x,y:integer;
p:array[0..4] of integer;
begin
y:=20;
for i:=0 to 4 do read(p);
readln;
a:=(p[0]+p[1])+(p[2]+p[3]+p[4]) div 7;
b:=p[0]+p[1] div ((p[2]+p[3]) div p[4]);
c:=p[0]*p[1] div p[2];
x:=a+b-p[(p[3]+3) mod 4];
if (x>10)
then y:=y+(b*100-a) div (p[p[4] mod 3]*5)
else
y:=y+20+(b*100-c) div (p[p[4] mod 3]*5);
writeln(x,',',y);
end.
{注:本例中,给定的输入数据可以避免分母为0或数组元素下表越界。}
输入:6 6 5 5 3 输出:______________________

2、program j302;
var a,b:integer;
var x,y:^integer;
procedure fun(a,b:integer);
var k:integer;
begin k:=a; a:=b; b:=k; end;
begin
a:=3; b:=6;
x:=@a; y:=@b;
fun(x^,y^);
writeln(a,',',b);
end.
输出:_______________________________

3、program j303;
var a1:array[1..50] of integer;
var i,j,t,t2,n,n2:integer;
begin
n:=50;
for i:=1 to n do a1:=0;
n2:=round(sqrt(n));
for i:=2 to n2 do
if (a1=0) then
begin
t2:=n div i;
for j:=2 to t2 do a1[i*j]:=1;
end;
t:=0;
for i:=2 to n do
if (a1=0) then
begin
write(i:4); inc(t);
if (t mod 10=0) then writeln;
end;
writeln;
end.
输出:_____________________________________________
_____________________________________________

4、Program j304;
Type str1=string[100];
Str2=string[200];
Var
S1:str1; s2:str2;
Function isalpha(c:char):Boolean;
Var i:integer;
Begin
i:=ord(c);
if ((i>=65) and (i<=90)) or ((i>=97) and (i<=122)) then
isalpha:=true
else isalpha:=false;
end;
function isdigit(c:char):Boolean;
var i:integer;
begin
i:=ord(c); if (i>=48) and (i<=57) then isdigit:=true
else isdigit:=false;
end;
procedure expand(s1:str1;var s2:str2);
var i,j:integer; a,b,c:char;
begin
j:=1; c:=char(1); i:=0;
while (i<=ord(s1[0])) do
begin inc(i); c:=s1;
if c='-' then begin {1}
a:=s1[i-1]; b:=s1[i+1];
if (isalpha(a) and isalpha(b)) or (isdigit(a) and isdigit(b)) then begin
dec(j);
while (ord(upcase(a))<ord(upcase(s1[i+1]))) do
begin
s2[j]:=a; inc(j); inc(a); end;
end
else
begin s2[j]:=c; inc(j); end;
end{1}
else begin s2[j]:=c; inc(j); end; end; s2[0]:=char(j-2); end;
begin readln(s1); expand(s1,s2); writeln(s2);
end.

输入:wer2345d-h454-82qqq 输出:__________________________
四、完善程序(前4空,每空2.5分,后6空,每空3分,共28分)。
1、(求字符的逆序)下面的程序的功能是输入若干行字符串,每输入一行,就按逆序输出该行,最后键入-1终止程序。
请将程序补充完整。
Program j401;
type str1=string[100];
var line:str1; kz:integer;
procedure reverse(var s:str1);
var I,j:integer; t:char;
begin
i:=1; j:=length(s);
while (i<j) do begin
t:=s; s:=s[j]; s[j]:=t;
; ;
end;
end;
begin
writeln(‘continue? -1 for end.’);
readln(kz);
while ( )do
begin
readln(line);
;
writeln(line);
writeln(‘continue? -1 for end.’);
readln(kz);
end;
end.

2 2 3 3
2 -1 1 3
4 1 1 5
4 4 5 5
2、(棋盘覆盖问题)在一个2k×2 k个方格组成的棋盘中恰有一个方格与其它方格不同(图中标记为-1的方格),称之为特殊方格。现用L型(占3个小方格)纸片覆盖棋盘上除特殊方格的所有部分,各纸片不得重叠,于是,用到的纸片数恰好是(4 k-1)/3。在下表给出的一个覆盖方案中,k=2,相同的3各数字构成一个纸片。
下面给出的程序使用分治法设计的,将棋盘一分为四,依次处理左上角、右上角、左下角、右下角,递归进行。请将程序补充完整。

(图画不了...郁闷)
Program j402;
type arr1=array[1..65] of integer;
arr2=array[1..65] of arr1;
var board:arr2; tile:integer; size,dr,dc:integer;
procedure chessboard(tr,tc:integer; dr,dc:integer; var size:integer);
var t,s:integer;
begin
if (size=1) then ;
t:=tile; inc(tile);
s:=size div 2;
if then chessboard(tr,tc,dr,dc,s) else begin
board[tr+s-1]:=t;
end;
if (dr<tr+s) and (dc>=tc+s) then chessboard(tr,tc+s,dr,dc,s)
else begin board[tr+s-1][tc+s]:=t;
; end;
if (dr>=tr+s) and (dc<tc+s) then chessboard(tr+s,tc+s,dr,dc,s) else begin
board[tr+s][tc+s]:=t;
; end;
if (dr>=tr+s) and (dc>=tc+s) then chessboard(tr+s,tc+s,dr,dc,s)
else begin board[tr+s][tc+s]:=t;
; end;
end;
procedure prt1(n:integer);
var I,j:integer;
begin
for I:=1 to n do begin
for j:=1 to n do write(board[j]:3);
writeln;
end;
end;
begin
writeln(‘input size(4/8/16/64):’);
readln(size); writeln(‘input the position of special block(x,y):’);
readln(dr,dc); board[dr][dc]:=-1;
tile:=1; chessboard(1,1,dr,dc,size); prt1(size);
end.
NOIP2007年普及组(Pascal语言)参考答案与评分标准

一、单项选择题:(每题1.5分) 
题号 1 2 3 4 5 6 7 8 9 10
答案 D D C B B B B C C A
题号 11 12 13 14 15 16 17 18 19 20
答案 C A A A B D C D A A

二、问题求解:(每题 5分) 
1.90 2.210 

三、阅读程序写结果 
1. 15, 46(对1个数给4分,无逗号扣1分)
2. 3, 6 
3. 2 3 5 7 11 13 17 19 23 29 
31 37 41 43 47 
4. wer2345defgh45456782qqq 

四、完善程序(前4空(①--④),每空2.5分,后6空(⑤--⑩),每空3分) 
1.
① inc(i) 或i:=i+1 
② dec(j) 或 j:=j-1
③ kz<>-1
④ reverse(line) 
2. 
⑤ exit
⑥ (dr<tr+s)and(dc<tc+s) 
⑦ chessboard(tr,tc,tr+s-1,tc+s-1,s)
⑧ chessboard(tr,tc+s,tr+s-1,tc+s,s)
⑨ chessboard(tr+s,tc,tr+s,tc+s-1,s)
⑩ chessboard(tr+s,tc+s,tr+s,tc+s,s)
 
NOIP2008普及组初赛试题+答案
第十四届全国青少年信息学奥林匹克联赛初赛试题
( 普及组 Pascal 语言 二小时完成)
● ● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 
一、 单项选择题 (共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)。 
1.微型计算机中,控制器的基本功能是: 
A.控制机器各个部件协调工作 
B.实现算术运算和逻辑运算 
C.获取外部信息 
D.存放程序和数据 
2.设A=TRUE B=fALSE C=TRUE D=fALSE 以下逻辑运算中表达式值为真的是: 
A.(A∧B)∨(C∧D∨┐A) 
B. ((┐A∧B)∨C)∧┐D) 
C. (B∨C∨D)∧D∧A 
D. A∧(D∨┐C)∧B
3.在下列关于图灵奖的说法中,不正确的是: 
A. 图灵奖是美国计算机协会于1966年设立的,专门奖励那些对计算机事业做出重要贡献的个人 
B. 图灵奖有计算机界诺贝尔奖的称号 
C. 迄今为止,还没有华裔计算机科学家获此殊荣 
D. 图灵奖的名称取自计算机科学的先驱、英国科学家阿兰•图灵 
4.计算机在工作过程中,若突然停电,( )中的信息不会丢失。 
A.ROM 和 RAM B.CPU 
C.ROM D.RAM 
5.完全二叉树共有2n-1个节点,则它的叶节点数为: 
A. N-1 B.N 
C. 2*N D.2^N-1 
6.在下列各项中,( )不是操作系统软件。 
A. Solaris B.linux C.Windows Vista D.Sybase 
7.设栈S的初始状态为空,元素A,B,C,D,E,f依次入栈S,出栈的序列为B,D,f,E,C,A,则栈S的容量至少应该是: 
A.6 B.5 C.4 D.3 
8.与十进制数28.5625相等的四进制数是: 
A.123.21 B.131.22 C.130.22 D.130.21 
9.设字符串S="Olympic",S的非空字串的数目为 
A.28 B.29 C.16 D.17 
10.Web2.0是近年来互联网的热门概念之一,其核心思想是互动与分享,下列网站中,( )是典型的Web2.0应用。 
A.Sina B.flickr C.Yahoo D.google 
11.递归过程或函数调用时,处理参数和返回地址,通常使用一种称为( )的数据结构 
A.队列 B.多维数组 C.线性表 D.栈 
12.(2008)10+(5B)16的结果是: 
A.(833)16 B.(2089)10 C.(4163)8 D.(100001100011)2 
13.二叉树T,已知其先根遍历为1 2 4 3 5 7 6,中根遍历为2 4 1 5 7 3 6,后跟遍历是: 
A. 4 2 5 7 6 3 1 
B. 4 2 7 5 6 3 1 
C.7 4 2 5 6 3 1 
D. 4 2 7 6 5 3 1 
14.将数组{8,23,4,16,77,-5,53,100}中元素从大到小按顺序排序,每次可以交换任意两个元素,最少要交换()次。 
A.4 B.5 C.6 D.7 E.8 
15.对有序数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,成功查找元素19的比较次数是: 
A.1 B.2 C.3 D.4 
16.面向对象的程序设计(Object-Oriented Programming)是一种程序设计的方法论,它将对象作为程序设计的基本单元,将数据和程序封装在对象中,以提高软件的重用性、灵活性、和扩展性。下面关于面向对象的程序设计说法中正确的是()。 
A.面向对象的程序设计方法通常采用自顶向下的设计方法进行设计。 
B.面向对象的程序设计方法具有继承性(inheritance)、封装性(encapsulation)、多态性(polymorphism)等几大特点。 
C.支持面向对象特性称为面向对象的编程语言,目前较为流行的有C++,JAVA,C#等。 
D.面向对象的程序设计的雏形来自于Simula语言,后来在Smalltalk语言的完善和标准化的过程中得到更多的扩展和对以前的思想的重新注解。至今,Smalltalk语言任然被视为面向对象的基础。 
17.设T是一棵有n个定点的树,以下说法正确的是()。 
A.T有n条边 
B.T是联通的 
C.T是无环的 
D.T有n-1条边。 
19.NOIP竞赛不推荐使用的语言环境有()。 
A.Dev-C++ B.Visual C++ C. free pascal D.lazarus 
20.在pascal程序中,表达式(200 or 10)的值是: 
A.20 B.1 C.220 D.202 
二、问题求解(共2题,每题五分,共计十分): 
1.书架上有4本不同的书A、B、C、D,其中A和B是红皮的,C和D是黑皮的,把这4本书摆放在书架上,满足:所有的黑皮书排在一起的方法有:( )种,满足A必须比C靠左,所有红皮书都要放在一起,黑皮书要放在一起,共有( )种摆法。 
2.有6个城市,任何两个城市之间有一条道路连接,6个城市之间两两之间的距离如下表表示,则城市1到城市6的最短距离为( )。 
城市1 城市2 城市3 城市4 城市5 城市6 
城市1 0 2 3 1 12 15 
城市2 2 0 2 5 3 12 
城市3 3 2 0 3 6 5 
城市4 1 5 3 0 7 9 
城市5 12 3 6 7 0 2 
城市6 15 12 5 9 2 0三、阅读程序写结果(共4题,每题8分,共计32分): 
1.var 
i,a,b,c,d:integer; 
f:array[0..3] of integer; 
begin 
for i:=0 to 3 do 
read(f); 
a:=f[0]+f[1]+f[2]+f[3]; 
a:=a div f[0]; 
b:=f[0]+f[2]+f[3]; 
c:=(b*f[1]+a) div f[2]; 
d:=f[(b div c) mod 4]; 
if (f(a+b+c+d) mod 4]>f[2]) then 
begin 
a:=a+b; 
writeln(a) 
end else 
begin 
c:=c+d; 
writeln(c); 
end; 
end. 
输入: 9 19 29 39 
输出: 
2.procedure foo(a,b,c:integer); 
begin 
if a>b then foo(c,a,b) 
else 
writeln(a,',',b,',',c) 
end; 
var a,b,c:integer; 
begin 
readln(a,b,c); 
foo(a,b,c); 
end. 
输入:2 1 3 
输出:3.type 
TT=array[0..20]of integer; 
prodecure func(var ary:TT;n:integer); 
var i,j,x:integer; 
begin 
i:=0;j:=n-1; 
while i<j do begin 
while (i<j) and (ary>0) do inc(i); 
while (i<j) and (ary[j]<0) do dec(j); 
if i<j then begin x:=ary; 
ary:=ary[j]; 
ary[j]:=x; 
inc(i); 
dec(j); 
end; 
end; 
end; 

var 
a:TT; 
i,m:integer; 
begin 
m:=10; 
for i:=0 to m-1 do 
read(a); 
func(a,m); 
for i:=1 to m-1 do 
write(a,' '); 
writeln; 
end. 
输入:5 4 -6 -11 6 -59 22 -6 1 10 
输出: 

prodecure solve(first:string;spos_f,epos_f:integer;mid:string;spos_m,epos_m:integer); 
var i,root_m:integer; 
begin 
if spos_f > epos_f the nexit; 
for i:=spos_m to epos_m do 
if first[spos_f] = mid then begin 
root[m]:=i; 
break; 
end; 
solve(first,spos_s+1,spos_f+(root_m-spos_m),mid,spos_m,root_m-1); 
solve(first,spos_f+(root_m-spos_m)+1,epos_f,mid,root_m+1,epos_m); 
write(first[spos_f]); 
end; 

var first,mid:string; 
len:integer; 
begin 
readln(len); 
readln(first); 
readln(mid); 
solve(first,1,len,mid,1,len); 
writeln; 
end. 

输入:7 
ABDCEGF 
BDAGECF 
输出:
四、完善程序 

1.字符串替换 
给定一个字符串S(仅包含大小写字母),下面的程序将S中的每个字母用规定的字母替换,并输出S经过替换后的结果,程序的输入是两个字符串,第一个是给定的字符串S,第二个字符串S’有26个字母组成,他是a-z的唯一排列,大小写不定,S’规定了每个字母对应的替换字母:S’中的第一个字母是字母A和a的替换字母,及S中的A用该字母的大写替换,S中的a用该字母的小写替换;S’中的第二个字母是B和b的替换字母……以此类推。 

var 
change,str:string; 

procedure CheckChangeRule; 
var i:integer; 
begin 
for i:=1 to 26 do begin 
__________1___________ 
change:=chr(ord(change)-ord('A')+ord('a')); 
end; 
end; 

procedure ChangeString; 
var len,i:integer; 
begin 
len:=length(str); 
for i:=1 to len do begin 
if ____________2___________ then 
begin 
str[ui]:=upcase(change[ord(str)-ord('A')+1); 
end; 
else begin 
________________3______________ 
end; 
end; 
end; 

begin 
readln(str); 
readln(change); 
CheckChangeRule; 
__________4__________; 
writeln(str); 
end.2.找第k大的数 
给定一个长度为1000000的无序正整数数列,以及另一个数n(1<=n<=1000000),然后以类似快速排序的方法找到序列中第n大的数(例:序列{1,2,3,4,5,6}中第3大得数是4) 
复制内容到剪贴板代码: 
var 
a:array[1..1000000]of integer; 
n,m,ans:integer; 
procedure swap(var a,b:integer); 
var t:integer; 
begin 
if (a<>b) then begin 
t:=a; 
a:=b; 
b:=t; 
end; 
end; 
function FindKth(left,right,n:integer):integer; 
var 
tmp,value,i,j:integer; 
begin 
if left=right then exit(left); 
tmp:=random(right-left) + left; 
swap(a[tmp],a[left]); 
value:= ______1______ 
i:=left; 
j:=right; 
while i<j do 
begin 
while (i<j) and (______2_______) do dec(j); 
if i<j then begin 
a[i]:=a[j]; inc(i); 
end else break; 
while (i<j) and (_______3_______) do inc(i); 
if i<j then begin 
a[j]:=a[i]; dec(j); 
end else break; 
end; 
_______4________; 
if i<n then begin inc(i);exit(FindKth(______5________));end; 
if i>n then begin dec(i);exit(________6_________);end; 
exit(i); 
end; 
var i:integer; 
begin 
randomize; 
m:=1000000; 
for i:=1 to m do read(a[i]); 
read(n); 
ans:=FindKth(1,m,n); 
writeln(a[ans]); 
end.
 
NOIP2008年普及组(Pascal语言)参考答案与评分标准 

一、单项选择题:(每题1.5分) 
1. A 2. B 3. C 4. C 5. B 
6. D 7. C 8. D 9. A 10. B 
11. D 12. A 13. B 14. B 15. B 
16. A 17. B 18. A 19. B 20. D 
二、问题求解:(共2题,每题5分,共计10分) 
1.12 4 
2.7(1->2->5->6) 
三、阅读程序写结果(共4题,每题8分,共计32分) 
1. 23 
2. 2,3,1 
3. 5 4 10 1 6 22 -59 -6 -11 -6 
4. DBGEFCA (求树的后序遍历) 

四.完善程序 (前4空,每空2.5分,后6空,每空3分,共28分) 
(说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不一定上报科学委员会审查) 
1. ① (change[i] >= 'A') and (change[i] <= 'Z') (只写(change[i] <= 'Z')也对) 
② (str[i] >= 'A') and (str[i] <= 'Z') (只写str[i] <= 'Z'也对) 
③ str[i] := change[ord(str[i]) - ord('a') +1]; 
④ ChangeString; 

2. ① a[left] 
② a[j] < value (或a[j] <= value) 
③ a[i] > value (或a[i] >= value) 
④ a[i] := value; 
⑤ i,right,n 
⑥ FindKth(left, i, n)
 
第十五届全国青少年信息学奥林匹克联赛初赛试题
( 普及组  Pascal语言   二小时完成 )
● ●  全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效  ●● 

一. 单项选择题 (共20题,每题1.5分,共计30分。每题有且仅有一个正确答案。)
1、 关于图灵机下面的说法哪个是正确的:
A) 图灵机是世界上最早的电子计算机。
B) 由于大量使用磁带操作,图灵机运行速度很慢。
C) 图灵机是英国人图灵发明的,在二战中为破译德军的密码发挥了重要作用。
D) 图灵机只是一个理论上的计算模型。

2、关于计算机内存下面的说法哪个是正确的:
A) 随机存储器(RAM)的意思是当程序运行时,每次具体分配给程序的内存位置是随机而不确定的。
B) 1MB内存通常是指1024*1024字节大小的内存。
C) 计算机内存严格说来包括主存(memory)、高速缓存(cache)和寄存器(register)三个部分。
D) 一般内存中的数据即使在断电的情况下也能保留2个小时以上。

3、关于BIOS下面说法哪个是正确的:
A) BIOS是计算机基本输入输出系统软件的简称。Basic in out system
B) BIOS里包含了键盘、鼠标、声卡、显卡、打印机等常用输入输出设备的驱动程序。
C) BIOS一般由操作系统厂商来开发完成。
D) BIOS能供提各种文件拷贝、复制、删除以及目录维护等文件管理功能。

4、关于CPU下面哪个说法是正确的:
A) CPU全称为中央处理器(中央处理单元)。
B) CPU可以直接运行汇编语言。
C) 同样主频下,32位的CPU比16位的CPU运行速度快一倍。
D) CPU最早是由Intel公司发明的。

5、关于ASCII,下面哪个说法是正确的:
A) ASCII码就是键盘上所有键的唯一编码。
B) 一个ASCII码使用一个字节的内存空间就能够存放。
C) 最新扩展的ASCII编码方案包含了汉字和其他欧洲语言的编码。
D) ASCII码是英国人主持制定并推广使用的。

6、下列软件中不是计算机操作系统的是: 
A) Windows     B) Linux    C) OS/2     D) WPS

7、关于互联网,下面的说法哪一个是正确的:
A) 新一代互联网使用的IPv6标准是IPv5标准的升级与补充。
B) 互联网的入网主机如果有了域名就不再需要IP地址。
C) 互联网的基础协议为TCP/IP协议。
D) 互联网上所有可下载的软件及数据资源都是可以合法免费使用的。

8、关于HTML下面哪种说法是正确的:
A) HTML实现了文本、图形、声音乃至视频信息的统一编码。
B) HTML全称为超文本标记语言。
C) 网上广泛使用的 Flash动画都是由HTML编写的。
D) HTML也是一种高级程序设计语言。

9、关于程序设计语言,下面哪个说法是正确的:
A) 加了注释的程序一般会比同样的没有加注释的程序运行速度慢。
B) 高级语言开发的程序不能使用在低层次的硬件系统(如:自控机床)或低端手机上。
C) 高级语言相对于低级语言更容易实现跨平台的移植。
D) 以上说法都不对。

10、已知大写字母A的ASCII编码为65(十进制),则大写字母J的十进制ASCII编码为:
A) 71     B) 72    C) 73    D) 以上都不是

11、十进制小数125.125对应的八进制数是
A) 100.1    B) 175.175    C) 175.1   D) 100.175

12、有六个元素FEDCBA 从左至右依次顺序进栈,在进栈过程中会有元素被弹出栈。问下列哪一个不可能是合法的出栈序列? 
A) EDCFAB   B) DECABF   C) CDFEBA   D) BCDAEF

13、 表达式a*(b+c)-d的后缀表达式是:
A) abcd*+-   B) abc+*d-    C) abc*+d-   D) -+*abcd

14、一个包含n个分支结点(非叶结点)的非空二叉树,它的叶结点数目最多为:
A) 2n + 1    B) 2n-1   C) n-1    D) n+1   

15、快速排序最坏情况下的算法复杂度为: 
A) O(log2n)     B) O(n)     C) O(nlog2n)     D)  O(n2)

16. 有一个由4000个整数构成的顺序表,假定表中的元素已经按升序排列,采用二分查找定位一个元素。则最多需要几次比较就能确定是否存在所查找的元素: 
A) 11次     B) 12次     C) 13次     D)  14次

17、排序算法是稳定的意思是关键码相同的记录排序前后相对位置不发生改变,下列哪种排序算法是不稳定的:
A) 冒泡排序     B) 插入排序     C) 归并排序     D)  快速排序

18、已知n个顶点的有向图,若该图是强连通的(从所有顶点都存在路径到达其他顶点),则该图中最少有多少条有向边?
A) n     B) n+1    C) n-1     D)  n*(n-1)

19、全国信息学奥林匹克的官方网站为参与信息学竞赛的老师同学们提供相关的信息和资源,请问全国信息学奥林匹克官方网站的网址是:
A) http://www.noi.com/ B) http://www.noi.org/
C) http://www.noi.cn/ D) http://www.xinxixue.com/

20、在参加NOI系列竞赛过程中,下面哪一种行为是 不 被严格禁止的:
A) 携带书写工具,手表和不具有通讯功能的电子词典进入赛场。
B) 在联机测试中通过手工计算出可能的答案并在程序里直接输出答案来获取分数。
C) 通过互联网搜索取得解题思路。
D) 在提交的程序中启动多个进程以提高程序的执行效率。

二.问题求解(共2题,每空5分,共计10分)

1.小陈现有2个任务A,B要完成,每个任务分别有若干步骤如下:A=a1->a2->a3,B=b1->b2->b3->b4->b5。在任何时候,小陈只能专心做某个任务的一个步骤。但是如果愿意,他可以在做完手中任务的当前步骤后,切换至另一个任务,从上次此任务第一个未做的步骤继续。每个任务的步骤顺序不能打乱,例如……a2->b2->a3->b3……是合法的,而……a2->b3->a3->b2……是不合法的。小陈从B任务的b1步骤开始做,当恰做完某个任务的某个步骤后,就停工回家吃饭了。当他回来时,只记得自己已经完成了整个任务A,其他的都忘了。试计算小陈饭前已做的可能的任务步骤序列共有         种。

2.有如下的一段程序:
1. a:=1;
2. b:=a;
3. d:=-a;
4. e:=a+d;
5. c:=2*d;
6. f:=b+e-d;
7. g:=a*f+c;
现在要把这段程序分配到若干台(数量充足)用电缆连接的PC上做并行执行。每台PC执行其中的某几个语句,并可随时通过电缆与其他PC通讯,交换一些中间结果。假设每台PC每单位时间可以执行一个语句,且通讯花费的时间不计。则这段程序最快可以在         单位时间内执行完毕。注意:任意中间结果只有在某台PC上已经得到,才可以被其他PC引用。例如若语句4和6被分别分配到两台PC上执行,则因为语句6需要引用语句4的计算结果,语句6必须在语句4之后执行。

三.阅读程序写结果(共4题,每题8分,共计32分)
1.
var
a, b: integer;

function work(a, b: integer): integer;
begin
if a mod b <> 0 then
work := work(b, a mod b)
else
work := b;
end;

begin
read(a, b);
writeln(work(a, b));
end.
输入:20 12
输出:_______


2.
var
a, b: array[0..2] of integer;
i, j, tmp: integer;
begin
for i := 0 to 2 do
read(b[i]);
for i := 0 to 2 do
begin
a[i] := 0;
for j := 0 to i do
begin
inc(a[i], b[j]);
inc(b[a[i] mod 3], a[j]);
end;
end;
tmp := 1;
for i := 0 to 2 do
begin
a[i] := a[i] mod 10;
b[i] := b[i] mod 10;
tmp := tmp * (a[i] + b[i]);
end;
writeln(tmp);
end.
输入:2 3 5
输出:_______

3.
const c = 2009;
var
n, p, s, i, j, t: integer;
begin
read(n, p);
s := 0; t := 1;
for i := 1 to n do
begin
t := t * p mod c;
for j := 1 to i do
s := (s + t) mod c;
end;
writeln(s);
end.

输入:11 2
输出:        

4.
var
a: string;
n: integer;

procedure getnext(var str: string);
var
l, i, j, k: integer;
temp: char;
begin
l := length(str);
k := l - 1;
while (k>=1) and (str[k]>str[k+1]) do
dec(k);
i := k + 1;
while (i<=l) and (str[i]>str[k]) do
inc(i);
temp := str[k];
str[k] := str[i-1];
str[i-1] := temp;
for i := l downto k + 1 do
for j := k + 1 to i - 1 do
if str[j] > str[j+1] then
begin
temp := str[j];
str[j] := str[j+1];
str[j+1] := temp;
end;
end;

begin
read(a);
read(n);
while n > 0 do
begin
getnext(a);
dec(n);
end;
write(a);
end.

输入:NOIP 3
输出:         

四.完善程序 (前8空,每空3分,后2空,每空2分,共28分)

1.(最大连续子段和)给出一个数列(元素个数不多于100),数列元素均为负整数、正整数、0。请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为4,-5,3,2,4时,输出9和3;数列为1 2 3 -5 0 7 8时,输出16和7。

var
a: array[1..100] of integer;
n, i, ans, len, tmp, beg: integer;

begin
read(n);
for i := 1 to n do
read(a[i]);
tmp := 0;
ans := 0;
len := 0;
beg :=    ①     ;
for i := 1 to n do
begin
if tmp + a[i] > ans then
begin
ans := tmp + a[i];
len := i - beg;
end
else if (        ②        ) and (i - beg > len) then
len := i - beg;
if tmp + a[i]     ③      then
begin
beg :=     ④     ;
tmp := 0;
end
else
   ⑤        ; 
end;
writeln(ans, ' ', len);
end.

2. (国王放置) 在n*m的棋盘上放置k个国王,要求k个国王互相不攻击,有多少种不同的放置方法。假设国王放置在第(x,y)格,国王的攻击的区域是:(x-1,y-1), (x-1,y),(x-1,y+1),(x,y-1),(x,y+1),(x+1,y-1),(x+1,y),(x+1,y+1)。读入三个数n,m,k,输出答案。题目利用回溯法求解。棋盘行标号为0~n-1,列标号为0~m-1。

var
n, m, k, ans: integer;
hash: array[0..4, 0..4] of integer;

procedure work(x, y, tot: integer);
var
i, j: integer;
begin
if tot = k then
begin
inc(ans);
exit;
end;
repeat
while hash[x, y] <> 0 do
begin
inc(y);
if y = m then
begin
inc(x);
y :=     ①     ;
end;
if x = n then
exit;
end;
for i := x - 1 to x + 1 do
if (i >= 0) and (i < n) then
for j := y - 1 to y + 1 do
if (j >= 0) and (j < m) then
        ②        ;
        ③         ;
for i := x - 1 to x + 1 do
if (i >= 0) and (i < n) then
for j := y - 1 to y + 1 do
if (j >= 0) and (j < m) then
     ④     ;
inc(y);
if y = m then
begin
inc(x);
y := 0;
end;
if x = n then
exit;
until false;
end;

begin
read(n, m, k);
ans := 0;
fillchar(hash, sizeof(hash), 0);
        ⑤        ;
writeln(ans);
end.
 
第十六届全国青少年信息学奥林匹克联赛初赛试题
(普及组 Pascal语言 两小时完成)
一、单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确选项。)
1. 2E+03表示(   )。
A.2.03          B.5          C.8          D.2000
2.一个字节(byte)由(   )个二进制组成。
A.8         B.16          C.32          D.以上都有可能
3.以下逻辑表达式的值恒为真的是(    )。
A.P∨(┓P∧Q)∨(┓P∧┓Q)
B.Q∨(┓P∧Q)∨(P∧┓Q)
C.P∨Q∨(P∧┓Q)∨(┓P∧Q)
D.P∨┓Q∨(P∧┓Q)∨(┓P∧┓Q)
4.Linux下可执行文件的默认扩展名是(    )。
A. exe           B. com         C. dll         D.以上都不是
5.如果树根算第1层,那么一颗n层的二叉树最多有(    )个结点。
A. 2n-1         B. 2n        C.  2n+1        D. 2n+1
6.提出“存储程序”的计算机工作原理的是( )。
A. 克劳德•香农    B. 戈登•摩尔     C. 查尔斯•巴比奇     D.冯•诺依曼
7.设X、Y、Z分别代表三进制下的一个数字,若等式XY + ZX = XYX在三进制下成立,那么同样在三进制下,等式 XY * ZX = (       )也成立。
A. YXZ            B. ZXY            C. XYZ             D.XZY
8.Pascal语言、C语言和C++语言都属于(       )。
A. 面向对象语言    B. 脚本语言    C. 解释性语言    D.编译性语言
9.前缀表达式“+ 3 * 2 + 5   12 ” 的值是( )。
A.     23         B.     25         C.     37         D.     65
10.主存储器的存取速度比中央处理器(CPU)的工作速度慢的多,从而使得后者的效率受到影响。而根据局部性原理,CPU所访问的存储单元通常都趋于一个较小的连续区域中。于是,为了提高系统整体的执行效率,在CPU中引入了(   )。
A. 寄存器         B.  高速缓存         C.  闪存         D.  外存
11.一个字长为8位的整数的补码是11111001,则它的原码是(      )。
A. 00000111    B. 01111001     C. 11111001        D.10000111
12.基于比较的排序时间复杂度的下限是(     ),其中n表示待排序的元素个数。
A. O(n)         B. O(n log n)       C. O(log n)            D. O(n2)
13.一个自然数在十进制下有n位,则它在二进制下的位数与(     )最接近。
A. 5n          B. n*log210       C. 10*log2 n           D. 10n log2 n
14.在下列HTML语句中,可以正确产生一个指向NOI官方网站的超链接的是(    )。
A. 欢迎访问NOI网站
B. 欢迎访问NOI网站
C. <a> http://www.noi,cn 
D. 欢迎访问NOI网站
15.元素R1、R2、R3、R4、R5入栈的顺序为R1、R2、R3、R4、R5。如果第1个出栈的是R3,那么第5个出栈的不可能是(   )。
A.  R1         B. R2         C. R4         D. R5
16. 双向链表中有两个指针域llink和rlink,分别指向该结点的前驱及后继。设p指向链表中的一个结点,它的左右结点均为非空。现要求删除结点p,则下列语句序列中错误的是(    )。
A.p^.rlink^.llink=p^.rlink;
   p^.llink^.rlink=p^.llink; delete p;
B.p^.llink^.rlink=p^.rlink;
   p^.rlink^.llink = p^.llink; delete p;
C.p^.rlink^.llink = p^.llink;
   p^.rlink^.llink ^.rlink = p^.rlink; delete p;
D.p^.llink^.rlink = p^.rlink;
   p^.llink^.rlink^.link = p^.llink; delete p;
17. 一棵二叉树的前序遍历序列是ABCDEFG,后序遍历序列是CBFEGDA,则根结点的左子树的结点个数可能是(   )。
A.2         B. 3         C. 4         D. 5
18. 关于拓扑排序,下列说法正确的是(   )。
A.所有连通的有向图都可以实现拓扑排序
B.对同一个图而言,拓扑排序的结果是唯一的
C.拓扑排序中入度为0的结点总会排在入度大于0的结点的前面
D.拓扑排序结果序列中的第一个结点一定是入度大于0的点
19.完全二叉树的顺序存储方案,是指将完全二叉树的结点从上到下、从左到右依次存放到一个顺序结构的数组中。假定根结点存放在数组的1号位置上,则第k号结点的父结点如果存在的话,应当存放在数组中的(   )号位置。
A. 2k         B. 2k+1         C. k/2下取整             D. (k+1)/2
20. 全国青少年信息学奥林匹克系列活动的主办单位是(   )。
A. 教育部      B. 科技部      C. 共青团中央         D. 中国计算机学会 
三、问题求解(共2题,每题5分,共计10分)
1.LZW编码是一种自适应词典编码。在编码的过程中,开始时只有一部基础构造元素的编码词典,如果在编码的过程中遇到一个新的词条,则该词条及一个新的编码会被追加到词典中,并用于后继信息的编码。
     举例说明,考虑一个待编码的信息串:“xyx yy yy xyx”。初始词典只有3个条目,第一个为x,编码为1;第二个为y,编码为2;第三个为空格,编码为3;于是串“xyx”的编码为1-2-1(其中-为编码分隔符),加上后面的一个空格就是1-2-1-3。但由于有了一个空格,我们就知道前面的“xyx”是一个单词,而由于该单词没有在词典中,我们就可以自适应的把这个词条添加到词典里,编码为4,然后按照新的词典对后继信息进行编码,以此类推。于是,最后得到编码:1-2-1-3-2-2-3-5-3-4。
现在已知初始词典的3个条目如上述,则信息串“yyxy xx yyxy xyx xx xyx”的编码是                                          
2. 队列快照是指在某一时刻队列中的元素组成的有序序列。现有3个正整数元素依次入队、出队。已知它们的和为8,则共有_________种可能的不同的队列快照(不同队列的相同快照只计一次)。例如,"5 1"、"4 2 2"、""都是可能的队列快照;而"7"不是可能的队列快照,因为剩下的2个正整数的和不可能是1。 
四、阅读程序写结果(共4题,每题8分,其中第4题(1)(2)各4分,共计32分)
1. 
var
  a1,a2,a3,x:integer;
procedure swap(var a,b:integer);
var 
   t:integer;
begin
   t:=a;
   a:=b;
   b:=t;
end; 
begin
   readln(a1,a2,a3);
   if a1>a2 then
      swap(a1,a2);
   if a2>a3 then
      swap(a2,a3);
   if a1>a2 then
      swap(a1,a2);
   
   readln(x);
   if x<a2 then
      if x<a1 then
         writeln(x,‘  ’,a1, ‘  ’, a3, ‘  ’,a3)
      else
         writeln(a1,‘  ’,x, ‘  ’, a2, ‘  ’,a3)
   else
      if x<a3 then
         writeln(a1,‘  ’,a2, ‘  ’, x, ‘  ’,a3)
      else
         writeln(a1,‘  ’,a2, ‘  ’, a3, ‘  ’,x)
end.
输入
91 2 20
77
输出:__________
 
  
2.
Var
   n,m,i:integer;
function rSum(j:integer):integer;
var
   sum:integer;
begin
   sum:=0;
   while j<>0 do
   begin
      sum:=sum*10+(j mod 10);
      j:=j div 10;
   end;
   rSum:=sum;
end; 
begin
   readln(n,m);
   for i:=n to m do
      if i=rSum(i)
         then write(I,’’);
end.
输入:90 120
输出:__________ 


3.
var
   s:string;
   i:integer;
   m1,m2:char;
begin
   readln(s);
   m1:=’’;
   m2:=’’;
   for i:=1 to length(s) do
      if s[i]>m1 then
      begin
         m2:=m1;
         m1:=s[i];
      end
      else if s[i]>m2 then
         m2:=s[i];
   writeln(ord(m1),’ ’,ord(m2));
end.
输入:Expo 2010 Shanghai China
输出:
提示:
字符 空格 ‘0’ ‘A’ ‘a’
ASCII码 32 48 65 97

 
4.
 
const
    num = 5;
var
    n: integer;
function r(n : integer) : integer;
var
    i : integer;
begin
    if n <= num then
    begin
       r := n;
       exit;
    end;
    for i :=1 to num do
       if r(n-i) < 0 then
       begin
         r:=i;
         exit;
       end;
    r:=-1;
end;
begin
    readln(n);
    writeln(r(n));
end.
(1) 
输入:7
输出:__________(4分)
(2)
输入 16
输出:__________(4分)
 
  




五、完善程序
1.(哥德巴赫猜想)哥德巴赫猜想是指,任一大于2的偶数都可写成两个质数的和。迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。试编写程序,验证任一大于2且不超过n的偶数都能写成两个质数之和。
const 
   size=1000;
var 
   n,r,I,j,k,ans:integer;
   p:array[1..size] of integer;
   tmp:Boolean;
begin
   readln(n);
   r:=1;
   p[1]:=2;
   for i:=3 to n do
   begin
            ①        ;
      for j:=1 to r do
         if I mod    ②      =0 then
begin
   tmp:=false;
   break;
end;
if tmp then
begin
   inc(r);
        ③     ;
end;
   end;
   
   ans:=0;
   for i:=2 to (n div 2) do
   begin
      tmp:=false;
      for j:=1 to r do
         for k:=j to r do
           if i+i=     ④       then
           begin
              tmp:=true;
              break;
           end;
      if tmp then
         inc(ans);
   end;
   writeln(ans);
end.
若输入n为2010,则输出     ⑤       时表示验证成功,即大于2且不超过2010的偶数都满足哥德巴赫猜想。
2.(过河问题) 在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥走到河的左岸.在伸手不见五指的黑夜里,过桥时必须借照灯光来照明,不幸的是,他们只有一盏灯.另外,独木桥上最多能承受两个人同时经过,否则将会坍塌.每个人单独过独木桥都需要一定的时间,不同的人要的时间可能不同.两个人一起过独木桥时,由于只有一盏灯,所以需要的时间是较慢的那个人单独过桥所花费的时间.现在输入N(2<=N<1000)和这N个人单独过桥需要的时间,请计算总共最少需要多少时间,他们才能全部到达河左岸.
      例如,有3个人甲、乙、丙,他们单独过桥的时间分别为1   2   4,则总共最少需要的时间为7.具体方法是:甲   乙一起过桥到河的左岸,甲单独回到河的右岸将灯带回,然后甲,丙在一起过桥到河的左岸,总时间为2+1+4=7.
CONST
SIZE = 100;
     INFINITY = 10000;
     LEFT = true;
     RIGHT = false;
     LEFT_TO_RIGHT = true;
     RIGHT_TO_LEFT = false;
var
     n, i : integer;
     time : array[1..Size] of integer;
     pos :array[1..Size] of Boolean;
function max(a, b :integer) : integer;
begin
if a > b then
       max := a
     else
       max := b;
end;
function go(stage : boolean) : integer;
var
     i, j, num, tmp, ans : integer;
begin
if   (stage = RIGHT_TO_LEFT)
     then begin
        num := 0;
        ans :=0;
        for i := 1 to n do
           if pos[i] = Rignt then
           begin
              inc(num);
              if time[i] > ans then
                ans := time[i];
end;
if __________ then
begin
        go := ans;
        exit;
end;
ans := INFINITY;
for i := 1 to n – 1 do
       if pos[i] = RIGHT then
         for j := i+1 to n do
            if pos[j] = RIGHT then
            begin
               pos[i] := LEFT;
               pos[j] := LEFT;
               tmp := max(time[i], time[j]) + _______;
               if tmp < ans then
                  ans := tmp;
               pos[i] := RIGHT;
               pos[j] := RIGHT;
            end;
go := ans;
end
else if   (stage = LEFT_TO_RIGHT)
then begin
      ans := INFINITY;
        for i := 1 to n do
           if _______ then
           begin
              pos[i] := RIGHT;
              tmp := ________;
              if tmp < ans then
                ans := tmp;
              _________;
           end;
go := ans;
   end
   else go := 0;
end;
 
begin
    readln(n);
    for i := 1 to n do
    begin
       read(time[i]);
       pos[i] := RIGHT;
    end;
writeln(go(RIGHT_TO_LEFT));
end.

参考答案:
一、单项选择题(共20题,每题1.5分,共计30分)
题号 1 2 3 4 5 6 7 8 9 10
答案 D  A  A D  A D  B  D  C  B
题号 11 12  13  14  15  16  17  18  19  20 
答案 D  B B B B A A  D  C D
二、问题求解(共2题,每题5分,共计10分)
1.2-2-1-2-3-1-1-3-4-3-1-2-1-3-5-3-6(或22123113431213536)
2.49
三、阅读程序写结果(共4题,每题8分,其中第4题(1)、(2)各4分,共计32分)1.2 20 77 91
2.99 101 111
3.120 112
4.(1)1
(2)4
四、完善程序(前4空,每空2.5分,后6空,每空3分,共计28分)
(说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不一定上报科学委员会审查)
1.① tmp = 1
② p[j]
③ p[r] = i
④ p[j] + p[k](或p[k] + p[j])
⑤ 1004
2.① num <= 2(或num < 3 或num == 2)
② go(LEFT_TO_RIGHT)
③ pos[i] == LEFT(或LEFT == pos[i])
④ time[i] + go(RIGHT_TO_LEFT)(或go(RIGHT_TO_LEFT) + time[i])
⑤ pos[i] = LEFT
本小题中,LEFT可用1代替,LEFT_TO_RIGHT可用1代替,RIGHT_TO_LEFT可用0代替。
 
第十七届全国青少年信息学奥林匹克联赛初赛试题
(普及组Pascal语言两小时完成)
●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●
一、单项选择题(共20题,每题1.5分,共计30分.每题有且仅有一个正确选项。)
1.在二进制下,1100011+(  )=1110000。
  A.1011      B.1101      C.1010     D.1111
 2.字符“O”的ASCII码为48,则字符“9”的ASCII码为(  )。
  A.39        B.57        C.120      D.视具体的计算机而定
3.一片容量为8GB的SD卡能存储大约(  )张大小为2MB的数码照片。
  A.1600      B.2000      C.4 000    D.16000
 4.摩尔定律(Moore’s law)是由英特尔创始入之一戈登•摩尔(Gordon Moore)提出来的。根据摩尔定律,在过去几十年以及在可预测的未来几年,单块集成电路的集成度大约每(  )个月翻一番。
 A.1          B.6         C.18       D.36
 5.无向完全图是图中每对顶点之间都恰有一条边的简单图。己知无向完全图G有7个顶点,则它共有(  )条边。
  A.7         B.21        C.42       D.49
 6.寄存器是(  )的重要组成部分。
  A.硬盘      B.高速缓存    C.内存    D.中央处理器(CPU)
7.如果根结点的深度记为1,则一棵恰有2011个叶结点的二叉树的深度最少是(  )。
  A.10        B.11        C.12        D.13
 8.体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。每个同学按顺序来到操场时,都从排尾走向排头,找到第一个比自己高的同学,并站在他的后面。这种站队的方法类似于(  )算法。
  A.快速排序    B.插入排序    c.冒泡排序    D.归并排序
9.一个正整数在二进制下有100位,则它在十六进制下有(  )位。
  A.7          B.13       C.25       D.不能确定
10.有人认为,在个人电脑送修前,将文件放入回收站中就是已经将其删除了。这种想法是(  )。
  A.正确的,将文件放入回收站意味着彻底删除、无法恢复
  B.不正确的,只有将回收站清空后,才意味着彻底删除、无法恢复
  c.不正确的,即使将回收站清空,文件只是被标记为删除,仍可能通过恢复软件找回
  D.不正确的,只要在硬盘上出现过的文件,永远不可能被彻底删除
11.广度优先搜索时,需要用到的数据结构是(  )。
  A.链表      B.队列     C.栈       D.散列表
12.在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是指(  )。
  A.程序运行时理论上所占的内存空间
  B。程序运行时理论上所占的数组空间
  c.程序运行时理论上所占的硬盘空间
  D.程序源文件理论上所占的硬盘空间
13.在含有n个元素的双向链表中查询是否存在关键字为k的元素,最坏情况下运行的时间复杂度是(  )。
  A.O(I)      B.O(10g n)    C.O(n)   D.O(n log n)
14.生物特征识别,是利用人体本身的生物特征进行身份认证的一种技术。目前,指纹识别、虹膜识别、人脸识别等技术己广泛应用于政府、银行、安全防卫等领域。以下不属于生物特征识别技术及其应用的是(  )。
 
15.现有一段文言文,要通过二进制哈夫曼编码进行压缩。简单起见,假设这段文言文只由4个汉字“之”、“乎”、“者”、“也”组成,它们出现的次数分别为700、600、300、200。那么,“也”字的编码长度是(  )。
  A.1       B.2        C.3        D.4
16.关于汇编语言,下列说法错误的是(  )。 
A.是一种与具体硬件相关的程序设计语言
  B.在编写复杂程序时,相对于高级语言而言代码量较大,且不易调试
  c.可以直接访问寄存器、内存单元、以及I/O端口
  D.随着高级语言的诞生,如今己完全被淘汰,不再使用
17.  (  )是一种选优搜索法,按选优条件向前搜索,以达到目标。当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择。
  A.回溯法      B.枚举法      c.动态规划      D.贪心法
18.1956年(  )授予肖克利(William Shockley)、巴丁(John Bardeen)和布拉顿(Walter Brattain),以表彰他们对半导体的研究和晶体管效应的发现。
  A.诺贝尔物理学奖        B.约翰•冯•诺依曼奖
  C.图灵奖                D.高德纳奖(Donald E.Knuth Prize)
19.对一个有向图而言,如果每个节点都存在到达其他任何节点的路径,那么就称它是强连通的。例如,右图就是一个强连通图。事实上,在删掉边(  )后,它依然是强连通的。
  A.a        B.b        C.c        D.d
 
20.从ENIAC到当前最先进的计算机,冯•诺依曼体系结构始终占有重要的地位。冯•诺依曼体系结构的核心内容是、(  )。 
A.采用开关电路                       B.采用半导体器件 
C.采用存储程序和程序控制原理         D.采用键盘输入
二、问题求解(共2题,每题5分,共计10分)
1.每份考卷都有一个8位二进制序列号。当且仅当一个序列号含有偶数个1时,它才是有效的。例如,00000000、01010011都是有效的序列号,而11111110不是。那么,有效的序列号共有______________个。
2.定义字符串的基本操作为:删除一个字符、插入一个字符和将一个字符修改成另一个字符这三种操作。将字符串A变成字符串B的最少操作步数,称为字符串A到字符串B的编辑距离。字符串“ABCDEFG”到字符串“BADECG”的编辑距离为_____________。
三、阅读程序写结果(共4题,每题8分,共计32分)
1. Var
n,m,I,ans:integer;
begin
    readln(n,m);
    ans:=O;
    i:=n;
    while i<=m d0
    begin
    ans:=ans+i;
    inc(i);
    end;
writeln(ans); 
end.
输入:10 20
输出:
2. Var
    map,tel:string;
i:integer;
begin
    map:=’22233344455566677778889999’;
    readln(tel);
    for i:=1  to length(tel)  do
    if  (tel[i] >= ’O’)  and  (tel[i] <= ’9’)
    then write(tel[i])
    else if  (tel[i]>=’A’)  and  (tel[i] <= ’Z’)
then write(map[ord(tel[i])-0rd(’A’) +1]); end.
输入:CCF-NOIP-2011
输出:________________________
3. 
const
    SIZE=100;
    Var
    n,i,sum,x:integer;
a:array[1..SIZE]  of integer;
 begin
    readln(n);
  、  fillchar(a,sizeof(a),O);
    for i:=1 to n do
    begin
    read(x);
    inc(a[x]);
    end;
    i:=O;
    sum:=0;
    while sum<(n div 2 + 1)  do
    begin
    inc(i);
    sum:=sum+a[i];
    end;
writeln(i);
end.
输入:
11
4 5  6  6  4  3  3  2  3  2  1
输出:_____________________

4. Var
    n,m:integer;
  function solve(n,m:integer):integer;
  Var 
    i,sum:integer;
  begin
    if m=1  then
    begin
    solve:=1;
    exit;
    end;
    sum:=O;
    for i:=1 to n-1 do
    sum:=sum+solve(i,m-1);
solve:=sum; 
end; 
begin
    readln(n,m);
writeln(solve(n,m)); 
end.
输入:7 4
输出:________________________
四、完善程序(前11空,每空2分,后2空,每空3分,共计28分)
1.  (子矩阵)输入一个n1+m1的矩阵a,和n2+m2的矩阵b,问a中是否存在子矩阵和 b相等。若存在,输出所有子矩阵左上角的坐标;若不存在输出“There is no answer”。 
const
SIZE=50; 
var
    n1,m1,n2,m2,i,j,k1,k2:integer;
    a,b:array[1..SIZE,1..SIZE]  of integer;
good,haveAns:boolean; 
begin
    readln(n1,m1);
    for i  :=1 to n1 do
    for j  :=1 t0 m1 do
    read(a[i][j]);
    readln(n2,m2);
    for i:=1 to n2 do
    for j:=1 to m2 do
       ①    ;
    haveAns:=false;
    for i:=1 to n1-n2+1 do
    for j:=1 to    ②    do
    begin
        ③  ;
    for k1:=1 to n2 do
    for k2:=1 to    ④    do
    if a[i+k1-1][j+k2-1]<>b[k1][k2】then
    good:=false;
    if good then
    begin
    writeln(i,’ ’,j);
       ⑤    ;
       end;
    end;
    if not haveAns then
writeln(’There is no answer’);
end.
2.(大整数开方)输入一个正整数n(1<n<10100),试用二分法计算它的平方根的整数部分。 
const
SIZE=200; 
type
    hugeint=record
    len:integer;
    num:array[1..SIZE]of integer;
    end;
//len表示大整数的位数;num[1]表示个位、num[2]表示十位,以此类推 
var   
  s:string;
  i:integer;
    target,left,middle,right:hugeint;
    function  times(a,b:hugeint):hugeint;
   //计算大整数a和b的乘积
    var
    i,j:integer;
    ans:hugeint;
    begin    
    fillchar(ans,sizeof(ans),O);
    for i:=1 to a.1en do
    for j:=1  to b.1en do
          ①    :=ans.num[i+j-1]  +a.num[i] *b.num[j];
    for i:=1 to a.1en+b.1en do
    begin
    ans.num[i+1]:=ans.num[i+1] +ans.num[i]  div 10;
      ②     ;
    if ans.num[a.1en+b.1en]>0
    then ans.1en:=a.1en+b.1en
    else ans.1en:=a.1en+b.1en-1;
    end;
    times:=ans;
    end;
    function add(a,b :hugeint) :hugeint;
    //计算大整数a和b的和
    var
    i:integer;
    ans:hugeint;
    begin
    fillchar(ans.num,sizeof(ans.num),0);
    if a.1en>b.1en
    then ans.1en:=a.1en
    else ans.1en:=b.1en;
    for i:=1 to ans.1en do
    begin
    ans.num[i]:=    ③  ;
    ans.num[i+1]:=ans.num[i+1]+ans.num[i]div 10;
    ans.num[i]:=ans.num[i]mod 10;
    end;
    if ans.num[ans.1en+1]>O
    then inc(ans.1en);
add:=ans; 
end; 
function average(a,b:hugeint) :hugeint;
//计算大整数a和b的平均数的整数部分
Var
    i:integer;
ans:hugeint; 
begin
    ans:=add(a,b);
    for i  :=ans.1en down to 2 do
    begin
    ans.num[i-1] :=ans.num[i-1]  +  (   ④    ) * 10;
    ans.num[i]:=ans.num[i]  div 2;
    end;
    ans.num[1]:=ans.num[1]  div 2;
    if ans.num[ans.1en]=0
    then dec(ans.1en);
average:=ans;
end; 
function  plustwo(a:hugeint):hugeint;
//计算大整数a加2后的结果 
Var
    i:integer;
ans:hugeint; 
begin
    ans:=a;
    ans.num[1]:=ans.num[1]  +2;
    i:=1;
    while  (i<=ans.1en)  and  (ans.num[i]  >=10)  do
    begin
    ans.num[i+1]:=ans.num[i+1]  +ans.num[i]  div 10;
    ans.num[i]:=ans.num[i] mod 10;
    inc(i);
    end;
    if_ans.num[ans.1en+1]>O
    then    ⑤  ;
    plustwo:=ans;
  end;
  function over(a,b:hugeint):boolean;
  //若大整数a>b则返回1,否则返回O
  var
    i:integer;
  begin
    if(      ⑥      )then
    begin
    over:=false;
    exit;
    end;
    if a.1en>b.1en then
    begin
    over:=true;
    exit;
    end;
    for i:=a.1en downto 1 do
    begin
    if a.num[i]  <b.num[i]  then
    begin
    over:=false;
    exit;
    end;
    if a.num[i]  >b.num[i]  then
    begin
    over:=true;
    exit;
    end;
    end;
    over:=false;
  end;    
 begin
    readln(s);
    fillchar(target.num,sizeof(target.num),O);
    target.1en:=length(s);
    for i:=1 to target.1en do
    target.num[i]:=ord(s[target.1en-i+1])-    ⑦    ;
    fillchar(1eft.num,sizeof(1eft.num),0);
    left.1en:=1;
    left.num[1]:=1;
    right:=target;
    repeat
    middle:=average(1eft,right);
    if over(    ⑧    )
    then right:=middle
    else left:=middle;
    until over(plustwo(1eft),right);
    for i:=left.1en downto 1 do
    write(1eft.num[i]);
writeln; 
end.

NOIP2011普及组初赛(Pascal)参考答案
一、BBCCB DBBCC BACCC DAAAC

(1) 128
(2) 3(ABCDEFG BCDEFG BADEFG BADECG)

(1) 165(n..m的自然数求和)
(2) 22366472011(手机键盘输入CCFNOIP2011要按什么键)
(3) 3(中位数)
(4) 20(杨辉三角)
四.1
(1) read(b[i][j]);或 read(b[i,j])
(2) m1 - m2 + 1
(3) good := true;
(4) m2
(5) haveAns := true;
四.2
(1) ans.num[i + j - 1]
(2) ans.num[i]:= ans.num[i] mod 10
(3) ans.num[i] + a.num[i] + b.num[i]
(4) ans.num[i] mod 2
(5) inc(ans.len)
(6) a.len < b.len
(7) 48
(8) times(middle, middle), target


欢迎您其他用户,你的IP是3.144.202.167,你是一名游客,打开这个页面用时156.3毫秒。
网站站长:苏振亚 冀公网安备 13020502000039号
ICP备案号:冀ICP备13014298号 唐山网监备案号:ts13020038101099 河北网监备案号:13020002000709