程序设计初赛试题
文章作者:admin 发布日期:2013-12-3 文章录入:admin 点击:662


    2011年江东区第三届青少年程序设计竞赛笔试试题

    (说明:请将答案填在答题卡上,只交答题卡,时间120分钟。)

     

    1、 选择题:(每题2分,共20分)

     1、操作系统是一类重要的系统软件,下面几个软件不属于系统软件的是( )。  

    A)MS-DOS   B)Linux  C)Java  D)Windos 98  E)Unix
 2、 按照网络覆盖面积和各台计算机相距的远近,计算机网络分为(  )   

    A)广域网和局域网                 B)信息交换网和广域网  
C)分布式系统和集中式系统      D)公用网和专用网        E)总线网和星型网
 3、中缀表达式A-(B+C/D)*E的后缀表达式是( )。      

    A)AB-C+D/E*    B) ABC+D/-E*     C)ABCD/E*+-     D)ABCD/+E*-     E) AB-CD/-E*
 4、已知公式:

            

       则f(f((f(2)+1)/3))的值是(    )。

    A. 1        B. 5         C. 14        D. 30        E.55

    5、在微机系统中,最基本的输入输出模块BIOS存放在(       )中。  
         (A) RAM   (B) ROM   (C) 硬盘    (D)寄存器   (E)控制器
6、十进制算术表达式:3*512+5*64+2*8+1的运算中,用二进制表示为(     )。  
         (A)1011010001 (B) 10110100011 (C) 11101010001 (D) 11110100011  (E)111000
7、Internet给9万彩票合法吗提供了资源共享、浏览、检索信息和远程登录等多种服务,下面几个选项中用于远程登录的是(     )。     
      A.WWW   B.TCP/IP   C.Telnet   D.E-mail   E.FTP

    8、以下数据结构中,哪一个是线性结构?(   )  
      A.广义表   B. 二叉树  C. 稀疏矩阵  D. 队列
9、已知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

    10、  (2008)10 + (5B)16的结果是(   )。

    A. (833)16       B. (2089)10         C. (4163)8          D. (100001100011)2

     

    2、 问题求解:(每题4分,共20分)

    1.编号为1到13的纸牌顺时钟排成一圈,有人从编号为1的牌从数字1开始顺时钟数下去,1、2、3、…、20、21、…,一圈又一圈。问:当数到数字N时,所在纸牌的编号为                 。

    2.定义一种字符串操作,一次可以将其中一个元素移到任意位置。举例说明,对于字符串”BCA”,可以将A移到B之前,变成字符串”ABC”。如果要将字符串”DACHEBGIF”变成”ABCDEFGHI”,最少需要________次操作。 

    3.已知:1到10中有两个数1、7不能被2,3,5整除,那么1到1000中有多少个数不能被2,3,5 整除? 

    4.光明中学开设数学、英语和信息学三个兴趣学习小组,其中数学小组30人,英语小组15人,信息学小组18人,参加三个小组总人数为50人,其中有3人同时参加3个小组,那么同时只参加两个小组的同学有__________人?  

    5.(寻找假币) 现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,最少需要称_______次,就可以找出假币?请你指出第1次的称重方法_________________________________________________ 

     

       三、 写出程序的运行结果(共5题,每题6分,共30分)
      第1题:
      program test1;
      var n:integer;
      function  count(n:integer):integer;
      begin
        if n=1 then count:=0
        else
      if n mod 2=0 then count:=count(n div 2)+1
      else count:=count(n*3+1)+1;
      end;
      begin
        readln(n);
        writeln(count(n));
      end.
      输入:99
      输出:__________________________

    
      第2题:
      program test2(input,output);
      var
      i,j,k,s:integer;
      begin
      s:= ;
      for i:=3 downto 1 do
        begin
          for j:=1 to 3 do
             begin
               k:=0;
               repeat
                 k:=k+1;s:=s+k;
               until k=j;
               s:=s-k;
        end;
      write(‘s=’,s);
      end.
      输出:__________________________________

     

      3.program test3;
      var
      n,i,j,k,p:longint;
      begin
       i:=2;j:=0;k:=1;
       repeat
       inc(i);  p:=j+k;  j:=k;k:=p;
       until i=12;
       writeln('F(',12,')=',p);
      end.
      运行结果为:  _____________________________      

     

    4. program test4;

    Var t,s,i,j:integer;

    a:array[1..6] of integer;
      begin
        a[1]:=1;t:=0;
      for i:=2 to 6 do
        begin
      s:=0;
      for j:=1 to i-1 do
        s:=s+a[j];     a[i]:=s+1;
         end;
      for i:=1 to 6 do
        t:=t+a[i];
      writeln(‘t=’,t);
      end.
      运行结果为: ___________________________________        
 

    5. program test5;
      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.
      输入:8 9 –1 24 6 5 11 15 –28  9

    
     运行结果为:______________________________

     

    6.program test6;

    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

     

    运行结果为:   ______________          。

     

    四、程序完善题 (每格3分,共计30分)
1、编写一个给某分数约分的程序,输入分子和分母的值,输出约分后的分子和分母的值。

    Program ex1;

      Var

        a,b,c : integer;

    function common(x,y:integer):integer;

    var k:integer;

    Begin

        Repeat

    ___(1)_____ ;   x:=y;   y:=k;

    Until k=0 ;

    ____(2)___;

    End;

     Begin

       Readln(a,b);

       C:=common(a,b);

       Writeln(___(3)____);

    End.

     

    2、设有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺序。
      本题用数组建立标志位等方法求解,用数组实现链式结构。
      数组a[i]作为"指针"变量来使用,a[i]存放下一个结点的位置。设立指针j指向当前结点,则移动结点过程为j:=a[j],当数到m时,m结点出链,则a[j]:=a[a[j]]。
      [程序]
      program ex2;
      const n=14;m=4;
      var a:array[1..n] of integer;
      i,j,k,p:integer;
       begin
        for i:=1 to n-1 do a[i]:=i+1;
            a[n]:=1;
        (4)  ;
      k:=1;
      p:=0;
        repeat
             (5)  ;
      k:=k+1;
         if k=m then      
      begin
           write(a[j]:4);
      p:=p+1;
        (6)  ;
        (7)   ;
          end
         until p=n;
       end.

     

    3、【问题描述】

    有甲、乙、丙三个人和A、B、C三项不同的工作,每人一天只能干一项工作,且一项工作每天必须一个人干。下表表示的是甲、乙、丙三个人在A、B、C三个不同的工作岗位上工作一天所能创造的价值:


     


    A


    B


    C


    甲


    30


    50


    25


    乙


    35


    30


    20


    丙


    45


    40


    30


    说明:甲在A岗位上干一天所创造的价值为30,在B岗位上干一天所创造的价值为50…

    请编程确定如何分配工作(甲、乙、丙三人在什么工作岗位),三人一天共同创造的价值最多。

    【程序清单】

    program ex3;

    var

        i,j,a,b,c,ma,mb,mc,s,m:integer;

        v:array [1..3,1..3] of integer;

    begin

      m:=0;

      for i:= 1 to 3 do

      for i:= 1 to 3 do

        read(v[i,j]);

      for a:= 1 to 3 do

      for b:= 1 to 3 do

        begin

          c:=       (8)       ;

          if a*b*c=6 then

            begin

              S:=       (9)      ;

              if S > M then

                begin

                         (10)       ;

                  ma:=a;

                  mb:=b;

                  mc:=c

                end;

            end;

        end;   writeln('Jia:',CHR(64+ma),'Yi:':10,CHR(64+mb),'Bing:':10,CHR(64+mc));

    writeln('M=',m)

    end.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    2011年江东区第三届青少年程序设计竞赛笔试答题卷

     

    学校                    姓名            年级

     

    ------------○-------○--------○----------封装线----------○-----------○----------○----------------

     

     

    总分                评卷者             

     

     

    一、选择题(每题2分,共20分)


    题号


    1


    2


    3


    4


    5


    6


    7


    8


    9


    10


    答案


     


     


     


     


     


     


     


     


     


     


     

    二、填空题(每题4分,共20分)

    1、 _____________________________________________________

    2、 ________      3、_______     4、 __________

    5、_________, ____________________________________________________

    三、写出下列程序的运行结果(每题5分,共30分)

    1.          ____________________  __       2.        _____________      

    3.   ______________________                4.    _____________          

    5. _____________________________________    6. ____________________________

    四、程序填空(每空3分,共30分)

     

     (1)                               (2)                           

     

     (3)                               (4)                           

     

     (5)                               (6)                           

     

     (7)                               (8)                           

     

     (9)                               (10)                          

     

     

    2010年江东区第二届青少年程序设计竞赛笔试试题

    (pascal语言试题)参考答案

     

    一、选择题(每题2分,共20分)


    题号


    1


    2


    3


    4


    5


    6


    7


    8


    9


    10


    答案


    C


    A


    D


    E


    B


    C


    C


    D


    A


    A


     

    二:填空题(每题4分,共20分)

    1、 1+(N-1)mod 13   或1+13-int((n-1)/13)*13

    2、 4     3、266    4、 7

    5、4次 (1分), 第一步:分成3组:27,27,26,将前2组放到天平上(3分)

     

    三:填空(每题5分,共30分)

    1、   25          2、  s=21         3、 F(12)=89 

    4、 t=63          5、 max=77         6、  263

     

    四:程序填充(每空3分,共30分) 

        (1) K:=x mod y             (2)Exit(x)_或 common:=x;__

    (3)a div c, ‘ ‘ ,b div c    (4)  j:=n ;  _________

    (5)j:=a[j];                  (6) a[j]:=a[a[j]];   

    (7) k:=1;               (8)  6-a-b    _____  

    (9)  v[1,a]+v[2,b]+v[3,c]   (10) m:=s     ____   

                    

    1