宁波市第26届中小学生程序设计竞赛 小学组 初赛试题.doc
2011 年宁波市第 26 届中小学生程序设计竞赛 小学组 初赛试题 一、选择题(每题 2 分,共 30 分。每小题只有唯一一个正确答案) 1.二进制数(1011101)2的值是( ) (A)94 (B)93 (C)62 (D)61 2.每个不同的二进制数可以表示一种颜色,赤、橙、红、绿、青、蓝、紫这 7 种颜色,最 少需要几位二进制数来表示? ( ) 3.以下运算结果为 False 的是 ( ) (A)not (5>5) (B) (5>=4) and (7=5) 4.Pascal 源程序的扩展民是 ( ) (A) p (B) psc (C)pas (D)pascal 5.计算机的中央处理器的组成部件是( ) (A)控制器和存储器 (B)存储器和运算器 (C)控制器和运算器 (D)控制器、存储器和运算器 6.宁波市中小学程序设计竞赛自从首届举办以来,除了其中有一届因举办时间从下半年调 整到次年的上半年而没有举行外,每年举办一次。首届宁波市中小学程序设计竞赛是哪一 年举办的? (A)1984 年 (B) 1985 年 (C)1986 年 (D)1987 年 7.已知一维数组定义 a:array1.100of longint;每个元素占 4 个字节地址。已知 a1的开始 地址为第 10000 个字节处,问 a11的开始地址是第几个字节:( ) 8.在宁波市中小学生程序设计竞赛上机复赛中,阅卷老师会批改以下的哪些(个)文件( ) (A)先批改选手的源程序文件,如果找不到会批改可执行文件 (B)先批改选手的可执行文件,如果找不到会批改源程序文件 (C)只批改选手编译生成的可执行文件 (D)只批改选手的源程序文件 9.以下哪些(个)行为是不符合青少年网络文明公约的:( ) (A)相信绝大多数的网友是真诚的,随意与网友约会 (B)沉溺于网络游戏,影响学习 (C)上电脑课时下载大量迷幻类、穿越类的小说,以便晚上睡觉躲被窝看 (D)以上都是 10.在 Free Pascal 编程时,你写了一下的程序 ( )var n:longint; begin assign(input,a,txt);reset(input);/输入文件重定向到 a.txt 文件 read(n); close(input);/关闭输入文件end. 运行该程序时,返回如右图所示的错 误信息,这是由于 (A) 当前目录下找不到输入文件“a.txt” (B) 源程序存在 2 号语法错误 (C) 输入的值与变量 n 不匹配 (D) Pascal 编译器没有正确安装 11.有以下的程序:var s:string;begin readln(s); writeln(s1);end. 该程序运行时,输入如下的”ABC”后按回车键,输出为 ( ) (A) 1 (B)字符A (C)字符A的 ASCII 码 65 (D)字符串”ABC” 12.宁波市程序设计竞赛使用的 Free Pascal2.0.4 中 integer 型数据的是表示范围是( ) (A)-3276832767 (B)约正负 21 亿之间 (C)065536 (D)不一定 13.在 Pascal 程序中,以下变量名称正确的是 ( ) (A)begin (B)2011xx (C)hello (D)array 14.以下程序段结构,总体上看是属于哪个基本结构( )for i:=1 to do if i mod 2=0 then s:=s+1; (A)顺序结构 (B)循环结构 (C)选择结构 (D)树型结构 15.进行在线游戏时,用户登录;进入在线游戏网;选择游戏伙伴、开始游戏;选 择游戏室。正确的次序是 ( ) (A) (B) (C) (D) 二问题求解(每题 5 分,共 10 分) 1.有三个正整数 x,y 和 z,它们相加之和等于 21,且 xyz。显然 x=1,y=1,z=19 是一组 解,x=5,y=6,z=10 是另一组解。请问共有几组解呢?2.在四行四列的表格中放有 16 枚硬币(每格 1 枚硬币) ,以 1 表示正面朝上, 0 表示反面朝上。一次翻硬币是指,要么把某一行整行反转,要么把某一列 整列反转。某一行或某一列反转后,这一行上原来正面朝上的全变反面朝上, 原来反面朝上的全变为正面朝上了。 原来的硬币状态如右图所示(图中有 7 枚硬币正面朝上,9 枚硬币反面朝上) ,经若干 次整行、整列的翻转后,右图中最多可以使多少枚硬币正面朝上?使最多枚硬币正面朝上 时最少需要翻几次?三阅读程序,求程序运行输出结果(每题 8 分,共 32 分) 第 1 题: program xx2011_1; var n,i,c:longint;ave,s:extended;f:array1.10000of longint; beginread(n);ave:=0;for i:=1 to n do beginread(fi);ave:=ave+fi;0010001010011011输入: 5 7376 83 91 77 输出:end;ave:=ave/n;c:=0;for i:=1 to n doif fi1 do beginlast:=last-1;h:=stacklast,1;t:=stacklast,2;i:=h;j:=t;x:=fh;while ix) do i:=i+1;if in then j:=1;end; end; for i:=1 to n do beginfor j:=1 to n-1 dowrite(ai,j, );end; end. 第 2 题:完美覆盖 以 1×2 的多米诺骨牌去覆盖 n×m 的棋盘,当棋盘中的每一格都刚好被一块多米诺骨 牌覆盖时,这种覆盖叫多米诺骨牌的完美覆盖。如下图所示,2 行 3 列的棋盘,有 3 种完 美覆盖方案。以下程序求得 n×m 棋盘的完美覆盖总方案数。程序从第 1 行第 1 列开始,按照 1 行 1 列、1 行 2 列、1 行 3 列、1 行 m 列、2 行 1 列、2 行 2 列、2 行 3 列、2 行 m 列、n 行 1 列、n 行 2 列、n 行 3 列、n 行 m 列的次序,逐格尝试各格子的不同覆盖 方案。以 fi,j=0 表示第 i 行 j 列格子还没有被覆盖,以 fi,j=1 表示第 i 行 j 列格子被横向 覆盖,以 fi,j=2 表示第 i 行 j 列格子被纵向覆盖,覆盖的总方案数在变量 ans 中求得。 请将程序补充完整。 program xx2011_6; const maxn=100;maxm=100; var n,m,i,j:longint; ans:extended; f:array1.maxn,1.maxmof longint;procedure domino(i,j:longint); beginif i>n then begin;exit;end;if thenbeginif j<m thendomino(i,j+1)elsedomino( );endelsebeginif thenbeginfi,j:=1;fi,j+1:=1;if j<m thendomino(i,j+1)elsedomino( );fi,j:=0;fi,j+1:=0;end;if thenbeginfi,j:=2;fi+1,j:=2;if j<m thendomino(i,j+1)elsedomino( );fi,j:=0;fi+1,j:=0;end;end;end;beginread(n,m);for i:=1 to n dofor j:=1 to m dofi,j:=0;ans:=0;domino( );writeln(ans:0:0);end.