不是VIP会员,不能显示答案,请在后台“我的信息” 在线升级 VIP

一.选择题(每题1.5分,共30分。每小题只有唯一一个正确答案)

1. 二进制数(1011101)2与下列哪个十六进制数相同

  • A.(5D)16
  • B.(B5)16
  • C.(5B)16
  • D.(D5)16

2. 2. 每个不同的二进制数可以表示一种颜色,赤、橙、黄、绿、青、蓝、紫这7种颜色,最少需要几位二进制数来表示?

  • A.8
  • B.7
  • C.4
  • D.3

3. 以下运算结果为False的是

  • A.(5>=5) or (5>4) and (5<4)
  • B.not(‘a’<’b’) or (5>=4) and (7<7)
  • C.false
  • D.(5<4) or (5>4) and (5>=5)

4. Pascal源程序的扩展名是

  • A.pas
  • B.pascal
  • C.psc
  • D.p

5. 计算机的中央处理器的组成部件是

  • A.控制器和存储器
  • B.存储器和运算器
  • C.控制器和运算器
  • D.控制器、存储器和运算器

6. 宁波市中小学生程序设计竞赛自从首届举办以来,除了其中有一届因举办时间从下半年调整到次年的上半年而没有举行外,每年举办一次。首届宁波市中小学生程序设计竞赛是哪一年举办的?

  • A.1987年
  • B.1986年
  • C.1985年
  • D.1984年

7. 下列有关数组这种数据结构的描述正确的是

  • A.数据查找、修改和插入都很高效
  • B.数据查找、修改和插入都不够高效
  • C.数据查找和修改不够高效,数据插入高效
  • D.数据查找和修改高效,数据插入不够高效

8. 在宁波市中小学生程序设计竞赛上机复赛中,阅卷老师会批改以下的哪些(个)文件

  • A.只批改选手的源程序文件
  • B.只批改选手编译生成的可执行文件
  • C.先批改选手的源程序文件,如果找不到会批改可执行文件
  • D.先批改选手的可执行文件,如果找不到会批改源程序文件

9. 在Free Pascl编程时,你写了以下的程序 var n:longint; begin assign(input,'a.txt');reset(input);//输入文件重定向到a.txt文件 read(n); close(input);//关闭输入文件 end. 运行时该程序时,返回如右图所示的错误信息, 这是由于

  • A.输入的值与变量n不匹配
  • B.源程序存在2号语法错误
  • C.当前目录下找不到输入文件
  • D.Pascal编译器没有正确安装

10. 以下哪些(个)行为是不符合青少年网络文明公约的:

  • A.相信绝大多数网友是真诚的,随意与网友约会
  • B.沉溺于网络游戏,影响学习
  • C.上电脑课时下载大量迷幻类、穿越类的小说,以便晚上睡觉躲被窝看
  • D.以上都是

11. 有以下的程序: var s:string; begin readln(s); writeln(s[0]); end. 该程序运行时,输入如下的一行数据按回车键后, 12345678901234567890123456789012345678901234567890123456789012345 输出为

  • A.1
  • B.65
  • C.ASCII码为65的字符“A”
  • D.0

12. 以下不属于Pascal基本数据类型的是

  • A.integer
  • B.boolean
  • C.char
  • D.string

13. 在Pascal程序中,以下变量名称正确的是

  • A.2011nb
  • B.nb-2011
  • C.begin
  • D.nb2011_cz

14. 以下程序段结构总体上看是属于哪个基本结构 s:=0; for i:=1 to 10 do if i mod 2=0 then s:=s+1; writeln(s);

  • A.顺序结构
  • B.选择结构
  • C.循环结构
  • D.混合结构

15. 以数组f:array[0..12]来存储散列(hash)表,散列函数为h(x)=x mod 13,当发生冲突时,使用二次探查法来解决冲突。即当发现冲突时,依次尝试以下的位置: h(x),h(x)+12,h(x)-12,h(x)+22,h(x)-22,h(x)+32,h(x)-32,…。当在散列表中依次存储26,36,13,18,39,3,0时,0存储在数组f的第几个位置?

  • A.0
  • B.1
  • C.9
  • D.12

16. 以下哪个流程图符号是代表输入/输出框?

  • A.
  • B.
  • C.
  • D.

17. 进行在线游戏时,①用户登录;②进入在线游戏网;③选择游戏伙伴、开始游戏;④选择游戏室。正确的次序是

  • A.①②④③
  • B.②①④③
  • C.①②③④
  • D.②①③④

18. 计算中一般是以补码(二进制)来存储整数的。其中最高位为0表示正数,为1表示负数,其它各位表示整数的绝对值,如果为正数则把值直接化为二进制,为负数则化为二进制后各位取反再在最低位加1,如下表所示5的补码为00000101,-5的补码为11111011。请问补码为11111000的是整数

  • A.-8
  • B.8
  • C.-120
  • D.248

19. 为了加快网页下载的速度,网页上的图片文件的扩展名一般为

  • A.bmp和jpg
  • B.jpg和gif
  • C.bmp和gif
  • D.三个都可以

20. 在Windows操作系统中,当某个应用程序无任何响应时,通过以下哪个操作可以终止该应用程序的运行

  • A.单击“关闭”按钮
  • B.单击“最小化”按钮
  • C.按Alt+F4键
  • D.按Ctrl+Alt+Delete键

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

1. 有三个正整数x,y和z,它们相加之和等于201,且x≤y≤z。问有几种方案?
答案:3367

2. 在四行四列的表格中放有16枚硬币(每格1枚硬币),以1表示正面朝上,0表示反面朝上。一次翻硬币是指,要么把某一行整行反转,要么把某一列整列反转。某一行或某一列反转后,这一行上原来正面朝上的全变反面朝上,原来反面朝上的全变为正面朝上了。 原来的硬币状态如右图所示(图中有7枚硬币正面朝上,9枚硬币反面朝上),经若干次整行、整列的翻转后,右图中最多可以使多少枚硬币正面朝上?使最多枚硬币正面朝上时最少需要翻几次?
答案:13 3

三.阅读程序,求程序运行输出结果(每题8分,共32分)

1.

program cz2011_1;
var n,i,c:longint; ave,s:extended;
    f:array[1..10000]of longint;
begin
   read(n); ave:=0;
   for i:=1 to n do begin
      read(f[i]);
      ave:=ave+f[i];
   end;
   ave:=ave/n; s:=0;c:=0;
   for i:=1 to n do begin
      if f[i]<ave then c:=c+1;
      s:=s+(f[i]-ave)*(f[i]-ave);
   end;
   s:=s/n;
   writeln(ave:0:2,' ',c,' ',s:0:2);
end.
输入:
5
73  76  83  91  77
输出:80.00 3 40.08

2.

program cz2011_2;
var n,i,x,p,s:longint;
begin
   read(n,x);
   s:=0;p:=1;
   for i:=1 to n do begin
      p:=p*x;
      s:=s+p;
   end;
   writeln(s);
end.
输入:
19 2

输出:1048574

3.

program cz2011_3;
const maxn=100000;
var
   f:array[1..maxn]of longint;
   stack:array[1..maxn,1..2]of longint;
   n,i,j,h,t,last,x,s:longint;

begin
   read(n);
   for i:=1 to n do read(f[i]);
   stack[1,1]:=1;stack[1,2]:=n;
   last:=2;
   while last>1 do begin
      last:=last-1;
      h:=stack[last,1];t:=stack[last,2];
      i:=h;j:=t;x:=f[h];
      while i<j do begin
         while (i<j) and (f[j]<x) do j:=j-1;
         if i<j then begin
            f[i]:=f[j];i:=i+1;
         end;
         while (i<j) and (f[i]>x) do i:=i+1;
         if i<j then begin
            f[j]:=f[i];j:=j-1;
         end;
      end;
      f[i]:=x;
      if (h<i-1) then begin
         stack[last,1]:=h;stack[last,2]:=i-1;last:=last+1;
      end;
      if (i+1<t) then begin
         stack[last,1]:=i+1;stack[last,2]:=t;last:=last+1;
      end;
   end;
   s:=f[2]-f[1];
   for i:=3 to n do s:=s+f[i]-f[i-1];
   writeln(s);
end.
输入1:
3
20 10 30

输入2:
10
40  36  47  29  25  35  22  42  13  58

输出:-20|-45

4.

program cz2011_4;
var n,a,b,c,d:longint;
procedure matric(var a,b,c,d:longint;n:longint);
var a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,d3:longint;
begin
   if n=1 then begin a:=0;b:=1;c:=1;d:=1;exit;end;
   matric(a1,b1,c1,d1,n div 2);
   matric(a2,b2,c2,d2,n div 2);
   a3:=a1*a2+b1*c2;
b3:=a1*b2+b1*d2;
   c3:=c1*a2+d1*c2;
d3:=c1*b2+d1*d2;
   if n mod 2=1 then begin 
a:=b3;b:=a3+b3;c:=d3;d:=c3+d3;
end
 else begin 
a:=a3;b:=b3;c:=c3;d:=d3;
end;
end;
begin
   read(n);
   if n<3 then writeln(1)
   else begin
      matric(a,b,c,d,n-2);
      writeln(c+d);
   end;
end.

输入1:
3

输入2:
11


输出:2|89

四.程序填空(前5空每空2分,后6空每空3分,共28分)

1. 幻方


把1至n*n的正整数填在n行n列的正方形图内,使每一行、每一列和二条对角线上n个数之和都相等。这样的方阵图叫做幻方。如右图所示是一个3行3列的幻方。
下面的程序生成一个n行n列的幻方。生成幻方的方法是:
法1.如果n为奇数,第一个数1填入第1行中间,下一个数填入的位置为:
(1)如果已填的数的个数为n的倍数,则填入下一行;
(2)否则填入上一行右一列。如果向上越界,则填至最后一行;如果向右越界,填至最前一列。
法2.如果n=4k,如下图所示,先将1~n*n的数按行优先的次序填入表格中。然后将表格分为k*k个小表格,每个小表格有4行4列。将每个小表格中二条对角线上的8个数以n*n+1去减,即如果原来位置上的数为x,则替换为n*n+1-x。




法3.如果n=4k+2,如下图所示,先将表格分成A、B、C、D四块,每块都是奇数行奇数列的,根据填入奇数幻方的方法,按ADBC的次序填好。然后:
(1)交换A、C块中间一列从中间一个元素开始的k个;
(2)交换A、C块其余各行第1列开始的k列;
(3)交换B、D块从中间1列左数k-1列;




请将程序补充完整。


program cz2011_5;
const maxn=1000;
var n,i,j,n1,i1,j1,p,k,tmp:longint;
    a:array[1..maxn,1..maxn]of longint;
begin
   readln(n);
   if n=2 then begin writeln('No Solution!');exit;end;
   if n mod 2=1 then begin
      i:=1;j:=(n+1) div 2;
      for p:=1 to n*n do begin
         a[i,j]:=p;
         if p mod n=0 then inc(i)
         else begin
            i:=i-1;j:=j+1;
            if i<1   then i:=n;
            if j>n then j:=1;
         end;
      end;
   end else if n mod 4=0 then begin
      for i:=1 to n do
         for j:=1 to n do begin
            a[i,j]:=(i-1)*n+j;i1:=i mod 4;j1:=j mod 4;
            if (i1=j1)or(i1+j1=1)    then a[i,j]:=n*n+1-a[i,j];
         end;
   end else begin
      n1:=n div 2;
      i:=1;j:=(n1+1) div 2;   //stock A
      for p:=1 to n1*n1 do begin
         a[i,j]:=p;
         if p mod n1=0 then i:=i+1
         else begin
            i:=i-1;j:=j+1;
            if i<1 then i:=n1;
            if j>n1 then j:=1;
         end;
      end;
      i:=1+n1;j:=n1+(n1+1) div 2;   //stock D
      for p:=1+n1*n1 to 2*n1*n1 do begin
         a[i,j]:=p;
         if p mod n1=0 then i:=i+1
         else begin
            i:=i-1;j:=j+1;
            if i<1+n1 then i:=n;
            if j>n then j:=1+n1  ;
         end;
      end;
      i:=1;j:=n1+(n1+1) div 2; //stock B
      for p:=1+n1*n1*2 to 3*n1*n1 do begin
         a[i,j]:=p;
         if p mod n1=0 then i:=i+1
         else begin
            i:=i-1;j:=j+1;
            if i<1 then i:=n1;
            if j>n then j:=1+n1;
         end;
      end;
      i:=1+n1;j:=(n1+1) div 2;   //stock C
      for p:=1+n1*n1*3 to n1*n1*4 do begin
         a[i,j]:=p;
         if p mod n1=0 then i:=i+1
         else begin
            i:=i-1;j:=j+1;
            if i<1+n1 then i:=n;
            if j>n1 then j:=1;
         end;
      end;
      k:=n1 div 2    ;
      for i:=1 to n1 div 2 do    //swap some of A and D
         for j:=1 to k do begin
            tmp:=a[i,j];a[i,j]:=a[i+n1,j];a[i+n1,j]:=tmp;end;
      for i:=n1 div 2+2 to n1 do    //swap some of A and D
         for j:=1 to k do begin
            tmp:=a[i,j];a[i,j]:=a[i+n1,j];a[i+n1,j]:=tmp;end;
      i:=(1+n1)div 2;
      for j:=0 to k-1 do begin
            tmp:=a[i,j+i];a[i,j+i]:=a[i+n1,j+i];a[i+n1,j+i]:=tmp;end;
      j1:=n1+(1+n1) div 2;  //swap some of B and C
      for j:=0 to k-2 do
         for i:=1 to n1 do begin
            tmp:=a[i,j1-j];a[i,j1-j]:=a[i+n1,j1-j];a[i+n1,j1-j]:=tmp;end;

   end;
   for i:=1 to n do begin
      for j:=1 to n-1 do write(a[i,j],' ');writeln(a[i,n]);end;
end.

2. 完美覆盖
有一个n行m列的棋盘,以1×2的多米诺骨牌去覆盖n×m的棋盘。当棋盘中的每一个格子都只被一块多米诺骨牌覆盖时,这种覆盖叫多米诺骨牌的完美覆盖。如下图所示,2行3列的棋盘,有3种完美覆盖方案。

以下程序求得总方案数。程序从第1行第1列开始,以行优先的顺序逐格尝试各格子的不同覆盖方案。

rogram cz2011_6;
const maxn=100;maxm=100;
var
n,m,i,j:longint;
ans:extended;
f:array[1..maxn,1..maxm]of longint;

procedure domino(i,j:longint);
begin
  if i>n then begin
             ans:=ans+1       ;
    exit;
  end;
  if           f[i,j]<>0         then
      begin
      if j<m then
        domino(i,j+1)
      else
        domino(      i+1,j         );
      end
    else
       begin
       if       (f]i,j]=0) and (f[i,j+1]=0)       then
                    begin
                    f[i,j]:=1;
                    f[i,j+1]:=1;
                    if j<m then
                      domino(i,j+1)
                    else
                      domino(      i+1,j         );
                    f[i,j]:=0;f[i,j+1]:=0;
                    end;
       if       (f]i,j]=0) and (f[i+1,j]=0)         then
                    begin
                    f[i,j]:=2;
                    f[i+1,j]:=2;
                    if j<m then
                       domino(i,j+1)
                    else
                      domino(       i+1,j       );
                    f[i,j]:=0;f[i+1,j]:=0;
                    end;
       end;
    end;

begin
 read(n,m);
 for i:=1 to n do
   for j:=1 to m do
      f[i,j]:=0;
      ans:=0;
      domino(    1,1         );
      writeln(ans:0:0);
 end.