2003年第九届NOIP初赛试题(提高组) 在这里添加日志标题

2003年第九届NOIP初赛试题(提高组)
 
发布日期:  2006-01-22  访问总次数:  3738
 
第九届分区联赛提高组初赛试题
(提高组   PASCAL   语言   二小时完成)
●●  全部答案均要写在答案卷子上,写在试卷纸上一律无效  ●●
一.单项选择题  (共10题,每题1.5分,共计15分。每题有且仅有一个正确答案.)。
1.  图灵 (Alan Turing) 是 (      )。
    A) 美国人    B) 英国人     C) 德国人      D) 匈牙利人      E) 法国人
2.  第一个给计算机写程序的人是(      )。
    A) Alan Mathison Turing    B) Ada Lovelace         C) John von Neumann
    D) John Mc-Carthy          E) Edsger Wybe Dijkstra
3.  十进制数2003等值于二进制数(      )。
    A) 0100000111   B) 10000011    C) 110000111  D) 11111010011  E) 1111010011
4.  假设A=true,B=false,C=ture,D=ture,逻辑运算表达式A∧B∨C∧D的值是(   )。
    A) ture       B) false      C) 0        D) 1       E) NULL
5.  一个高度为h 的二叉树最小元素数目是(          )。
    A) 2h+1       B) h          C) 2h-1     D) 2h      E) 2h-1
6.  已知队列(13,2,11,34,41,77,5,7,18,26,15),第一个进入队列的元素是13,则第五个出队列的元素是(         )。
    A) 5          B) 41         C) 77        D) 13       E) 18
7.  下面一段程序是用(       )语言书写的。
          int func1(int n){
                int i,sum=0;
                for(i=1;i<=n;i++)
                     sum+=i*i;
                     return sum;
          }
    A) FORTRAN    B) PASCAL       C) C         D) PROLOG     E) BASIC
8.  设全集E={1,2,3,4,5},集合A={1,4},B={1,2,5},C={2,4},则集合(A ∩B)∪~C 为(      )。
    A) 空集        B) {1}       C) {3,5}    D){1,5}     E) {1,3,5}
9.  表达式(1+34)*5-56/7 的后缀表达式为(        )。
    A) 1+34*5-56/7        B) -*+1 34 5/56 7     C) 1 34 +5*56 7/-
    D) 1 34 5* +56 7/-    E) 1 34+5 56 7-*/
10.  下列计算机设备,即是输入设备,又是输出设备的是(       )。
     A) 键盘     B) 触摸屏     C) 扫描仪     D)投影仪     E) 数字化仪 
二.不定项选择题(共10题,每题1.5分,共计15分。多选少选均不得分)。
11.  下列分辨率的显示器显示出的图像,最清晰的是(     )。
     A) 800*600   B) 1024*768    C) 640*480    D) 1280*1024   E) 800*1000
12.  下列说法中,哪个(些)是错误的(        )。
     A)程序是指令的序列,它有三种结构:顺序、分支和循环。
     B)数据总线决定了中央处理器CPU所能访问的最大内存空间的大小。
     C)中央处理器CPU内部有寄存器组,用来储存数据。
     D)不同厂家生产的CPU所能处理的指令集是相同的。
     E)数据传输过程中可能会出错,奇偶校验法可以检测出数据中那一为在传输中出了差错。
13.  CPU访问内存的速度比访问下列哪个(些)存储设备要慢(     )。
     A)寄存器      B)硬盘        C)软盘         D)高速缓存    E)光盘
14.  下列电子邮件地址,哪个(些)是正确的(     )。
     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
15.  数字图像文件可以用下列哪个(些)软件来编辑(     )。
     A)画笔(Paintbrush) B)记事薄(Notepad) C) Photoshop  D) WinRAR  E)Midisoft
16.  下列哪个(些)软件不是操作系统软件的名字(       )。
     A)WindowsXP     B) DOS     C) Linux     D) OS/2     E) Arch/Info
17.  下列哪个(些)不是个人计算机的硬件组成部分(       )。
     A)主板        B)虚拟内存     C)电源     D)硬盘     E)总线
18.  运算试(2008)10-(3723)8 的结果是(       )。
     A)(-1715)10      B) (5)10      C) (5)16       D) (101)2       E) (3263)8
19.  已知元素(8,25,14,87,51,90,6,19,20),问这些元素以怎样的顺序进入栈,才能使出栈的顺序满足:8在51前面;90在87的后面;20在14的后面;25在6的前面;19在90的后面。(     )。
     A)20,6,8,51,90,25,14,19,87
     B)51,6,19,20,14,8,87,90,25
     C)19,20,90,7,6,25,51,14,87
     D)6,25,51,8,20,19,90,87,14
     E)25,6,8,51,87,90,19,14,20
20.  假设我们用d=(a1,a2,...,a5),表示无向图G的5个顶点的度数,下面给出的哪(些)组d 值合理(       )。
     A){5,4,4,3,1}     B){4,2,2,1,1}     C){3,3,3,2,2}
     D){5,4,3,2,1}     E){2,2,2,2,2}
三、问题求解(共2题,每题5分,共计10分)
1. 无向图G有16条边,有3个4度顶点、4个3度顶点,其余顶点的度均小于3,则G至少_______个顶点。
2. 某年级学生共选修6门课程,期末考试前,必须提前将这6门课程考完,每人每天只在下午至多考一门课程,设6门课程为C1,C2,C3,C4,C5,C6,S(Ci)为学习Ci 的学生集合。已知S(Ci)∩S(C6)≠ф,i=1,2,...,5,S(Ci)∩S(Ci+1)≠ф,i=1,2,3,4,S(C5)∩S(C1)≠ф,问至少安排_____天才能考完这6门课程。
四.阅读程序(共4题,每题8分,共计32分)
1.  program Program1;
    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 * 1228 - d;
      sum := sum + 21252;     sum := sum mod 21252;
      if (sum = 0 ) then    sum := 21252;
      writeln(sum);
    end.
输入:283 102 23 320                               输出____________
2. program Program2;
   const
     u : array[1..4] of integer = (0,5,3,1);
     v : array[1..4] of integer = (0,7,6,5);
   var  a,b,c,d,e,f,x,y,z: integer;
   begin
     read(a,b,c,d,e,f);
     z := f+ e + d + (c+3) div 4;   y := 5 * d + u[c mod 4];
     if (b > y) then
       begin
         z := z + (b - y + 8) div 9;
         x := ((b - y + 8) div 9 * 9 -(b - y)) * 4 + 11 * e + v[c mod 4];
         end
       else
         x := (y - b) * 4 + 11 * e + v[c mod 4];
       if (a > x) then
         z := z + (a - x + 35) div 36;
       writeln(z)
     end.
输入: 4 7 9 20 56 47                               输出____________________
3. program Program3;
var  m,n: integer;   mark: Boolean;
function test(m,N:integer):integer;
  var i,p: integer;   flag: boolean;
  begin
    m := m - 1;    i := 0;   flag := False;
    for p:= 2*N downto (N+1) do
    begin
      i:= (i+m) mod p;
      if (i
        begin
          test := 0;   flag := Ture;      Break;
          end
    end;
    if not(flag) then     test:=1;
  end;
begin
  read(n);   m:=1;   Mark := False;
  repeat
    if (test(m,n)=1) then
      begin   writeln(m); break;   end;
    m:= m+1;
  until Mrak;
end.
输入:7                                             输出_________

4. program Program4;
var m,n,i,j: integer;
    p,w,a,b: array[0..19] of integer;
begin
  read(n); m:= 0;
  for i:= 0 to n-1 do
  begin    read(p[i]);   b[i]:=1;  end;
  for i:=0 to  n-1 do
    begin
      if (i>0) then
         a[m]:=p[i]-p[i-1]
      else
         a[m]:=p[i];
      m:=m+1;
      while ((m>1) and (a[m-1]=0)) do
          begin  
               m:=m-1;   b[m]:=1; 
          end;
      if (m>0) then
        w[i]:=b[m-1];
      else
        w[i]:=b[0];
      a[m-1]:=a[m-1]-1;
      for j:=0 to m-1 do    b[j]:=b[j]+1;
      while ((m>1) and (a[m-1]=0)) do
          begin  
               m:=m-1;   b[m]:=1; 
          end;
    end;
    for i:= 0 to n-1 do
      begin
        write(w[i]);      write(' ');
      end;
    writeln(' ');
  end.
输入:9
      4 6 6 6 6 8 9 9 9 9
输出:____________________
五. 完善程序(共2题,第1题每空3分;第2题每空2分。共计28分)。
1. 翻硬币
题目描述:
    一摞硬币共有m枚,每一枚都是正面朝上。取下最上面的一枚硬币,将它翻面后放回原处。然后取下最上面的2枚硬币,将他们一起翻面后放回原处。在取3枚,取4枚……直至m枚。然后在从这摞硬币最上面的一枚开始,重复刚才的做法。这样一直做下去,直到这摞硬币中每一枚又是正面朝上为止。例如,m为1时,翻两次即可。

输    入:仅有的一个数字是这摞硬币的枚数m ,0< m <1000。
输    出:为了使这摞硬币中的每一枚都是朝正面朝上所必须翻的次数。
输入样例:30
输出样例:899
程    序:
    program Program1;
    var   m:integer;
    function solve(m: integer):integer;
       var i,t,d: integer;
           flag: Boolean;
       begin
         if (m = 1) then
            solve :=       (1)       
         else begin
                d := 2*m+1;     t := 2;     i := 1;    flag := False;
                repeat
                  if (t = 1) then
                    begin
                      solve :=       (2)       ;    flag := True;
                    end
                  else if (       (3)        ) then
                         begin
                           solve := i*m-1;     flag := True;
                         end
                       else
                         t :=      (4)       ;
                  i:=i+1;
                until flag;
              end
       end;
    begin
      read(m); if ((     (5)     ) and (m<1000)) then
         writeln(      (6)      );
    end.
2. OIM地形
题目描述:
二维离散世界有一种地形叫OIM(OI Mountain)。这种山的坡度只能上升('/')或下降('\'),而且两边的山脚都与地平线等高,山上所有地方都不低于地平线.例如:
  /\                    /\
 /  \/\ 是一座OIM;而 /   \    不是。
                            \/
这个世界的地理学家们为了方便纪录,给OIM所有可能的形状用正整数编好号,而且每个正整数恰好对应一种山形。他们规定,若两座山的宽度不同,则较宽的编号较大;若宽度相同,则比较从左边开始第1个坡度不同的地方,坡度上升的编号较大。以下三座OIM的编号有小到大递增:
 /\      /\        /\  /\
/  \/\  /  \/\/\  /  \/  \。显然/\的编号为1。但是地理学家在整理纪录是发觉,查找编号与山形的对应关系不是很方便。他们希望能快速地从编号得到山的形状。你自告奋勇答应他们写一个程序,输入编号,能马上输出山形。
输    入:一个编号(编号大小不超过600,000,000),
输    出:输入编号所对应的山形,1座山所占行数恰为它的高度,即山顶上不能有多余空行。
输入样例:15
输出样例:   /\  /\
            /  \/  \
程    序:
     program Program2;
     const
       L:integer =19;    SZ: integer =50;
       UP: char = '/';   DN: char = '\';
     Var
       i,nth,x,y,h,e,f:integer;
       m: array[0..1,0..38,0..19] of integer;
       pic: array[0..49,0..49] of char;
    
procedure init;
       var k,s,a,b,c: integer;
       begin
         for a:=0 to 1 do
           for b:=0 to 2*L do
             for c:=0 to L do
               m[a,b,c]:=0;  
         m[0,0,0]:=1;
         for k:=0 to 2*L-1 do
         begin
           for s:=1 to L do
           begin
             m[0,k+1,s] := m[0,k,s+1] + m[1,k,s+1];
             m[1,k+1,s]:=      (1)      ;
           end;
             m[0,k+1,0] :=m[0,k,1]+m[1,k,1];
         end;
       end;
      
       procedure draw(k,s,nth:integer);
       begin
         if (k=0) then exit;
         if ((nth-m[1,k,s])>=0) then
           begin
             nth:=nth-m[1,k,s];
             if (y>h) then       (2)       ;
             pic[y,x]:=UP;  y:=y+1;  x:=x+1;  draw(      (3)      );
           end
           else begin
                y:=y - 1;   pic[y,x]:=DN;     x:=x+1;   draw(k-1,s-1,nth);
                end;
       end; 
            
     begin
       init;
       read(nth);
       for e:=0 to SZ-1 do
         for f:=0 to SZ-1 do
           pic[e,f]:= ' ';
       x:=0;
       y:=0
       h:=0;
       i:=0;
    
      while ((nth-m[0,2*i,0])>=0) do
      begin
        nth:= nth-m[0,2*i,0];
               (4)        ;
      end;
      draw(          (5)           );
      for i:=h downto x-1 do
      begin
        for e:=0 to x-1 do
        write(pic[i,e]);
        writeln(' ');
      end;
     end.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值