宁波市第27届中小学程序设计竞赛
初中组初赛试题(图未显示)
●●所有答案都必须写在答题纸上,写在试卷上无效●●
一、选择题(每题1.5分,共30分。每小题只有唯一一个正确答案)
1.关于64位操作系统下面说法不正确的是 ( )
A. 64位操作系统的设计初衷是:满足各领域中需要大量内存和浮点性能的客户需求。
B. 64位操作系统的优势还体现在可以通过64位处理器控制更大的内存地址。
C. 目前,常用软件都是64位的。
D. 64位操作系统只能安装在CPU是64位的电脑上。
2.下面几种CPU,不属于64位CPU的是: ( )
A. 赛扬 D352 B. 酷睿2E6400 C. 奔腾 D 930 D. 酷睿T27003.虚拟现实技术是指:利用电脑模拟产生一个三维空间的虚拟世界,提供使用者关于视觉、听觉、触觉等感官的模拟,让使用者如同身历其境一般,可以及时、没有限制地观察三度空间内的事物。下面不属于虚拟现实技术应用的是: ( )
A. 在医学院校,学生可在虚拟实验室中,进行“尸体”解剖和各种手术练习。
B. 飞行员在真正驾驶前需要进行虚拟飞行训练。
C. 多个地区的医生进行远程医疗。
D. 目前影院的3D电影4.以下关于计算机语言的说法中,错误的是: ( )
A. 机器语言具有灵活、直接执行和速度快等特点。
B. 汇编语言与高级语言能被计算机接受并直接执行的计算机语言。
C. 汇编语言有着高级语言不可替代的用途。
D. 汇编语言比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。
5.将一棵有n个结点的完全二叉树用宽度优先搜索的方式存储在一个数组tree[ ]中,则根据完全二叉树的特性,下列选项中不正确的是: ( )
A. 若2*i<=n,那么tree[i]的左孩子为tree[2*i];若2*i+1<=n,那么tree[i]的右孩子为tree[2*i-1]。
B. 若i>1,tree[i]的父亲为tree[i div 2]。
C. 若i>n div 2,那么tree[i]为叶子结点。
D. 若i
6.图G中有一条回路,若该回路恰通过图G中每条边仅一次,则称该回路为欧拉回路,有欧拉回路的图称为欧拉图。以下为欧拉图的是: ( )
A B C D
7.下图左边为“1949中华人民共和国”的内码,从图中可知“共和国”三个字的内码为:
A. CD B9 FA B. B9 B2 BA CD B9 FA C. BA CD B9 FA D. B2 BA CD B9
8. 下列数值中,值和十进制数据(1234.5)10不相等的是: ( )
A. (10011010010.1)2 B. (103032.2)4 C. (2322.4)8 D.(4D2.8)16
9.下列操作系统中,是智能手机操作系统的是: ( )
A. Windows NT B. Windows Mobile C. Windows XP D. Windows Me
10. Internet中的IP地址可分为A、B、C、D、E五类,以下IP地址不属于A类地址的
是: ( )
A. 10.0.0.1 B. 172.0.0.1 C. 126.0.0.1 D. 110.0.0.1
11.一棵二叉树的前序遍历为:abcdefghijk;中序遍历为:cdbefaghijk。则该二叉树的后序遍历结果是: ( )
A. dfcebkjihga B. cdfebkjigha C. dcefbjkihga D. dcfebkjihga
12.下列做法中,符合信息安全要求的是: ( )
A. 用自己的电话号码作为常用的密码
B. 密码的设置尽可能没有规律,并且要定期更换密码
C. 在任何场合使用相同的密码
D. 不用防范木马、病毒,因为它们不会对信息的安全构成威胁
13、下列行为符合网络道德规范的是 ( )
A. 聊天时对网友不礼貌地反唇相讥,任意谩骂
B. 将病毒放在自己的网站中
C. 帮助网友解密正版杀毒软件,延长使用期
D. 对论坛上别人的合理求助,给予帮助
14、对一批编号为1~200的灯进行以下操作:凡编号是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关;4的倍数反方向又拨一次开关;……(直到200的倍数)。则最后处于与初始状态相反状态的灯的数量是: ( )
A. 14 B. 15 C. 24 D. 25
15、下列人物中,被称为“信息论之父”的是: ( )
A. 顾拜旦 B. 冯·诺依曼 C. 申农 D. 比尔·盖茨
16、下列关于计算机病毒的叙述中,错误的是 ( )
A. 计算机病毒是人为编制的具有破坏性的程序,具有潜伏性、传染性和和寄存性
B. 计算机病毒可以通过磁盘、网络等媒介传播
C. 在用IE浏览网页时,当鼠标指向某一位置时变成“小手”,说明该位置有计算机病毒
D. 计算机感染病毒后可能会出现磁盘可用空间突然变小或频繁自动启动的现象
17、有八个元素HGFEDCBA 从左至右依次顺序进栈,在进栈过程中会有元素被弹出栈。按照出栈规则,则下列序列中,不可能产生的出栈序列是: ( )
A. EDCFABGH B. GDECABFH C. HGCDFEBA D. HGBCDAEF
18、表达式a*(b+c-d)+e*f的前缀表达式是: ( )
A. +*a-+bcd*ef B. *a-+bcd+*ef C. -+bcd*a+*ef D. abc+d-*ef*+
19、以下对于顺序查找和二分查找时间复杂度的描述中,正确的是 ( )
A. 顺序查找最坏情况下的时间复杂度为O(n/2),二分查找最坏情况下的时间复杂度为O(log2n)
B. 顺序查找平均情况下的时间复杂度为O(n/2),二分查找最坏情况下的时间复杂度为O(log2(n))
C. 顺序查找最优情况下的时间复杂度为O(1),二分查找最坏情况下的时间复杂度为O(n)
D. 顺序查找最坏情况下的时间复杂度为O(n),二分查找最坏情况下的时间复杂度为O(n^2)
20、小红要将已完成的英语第一至第三章的练习共3个文件,通过电子邮件,发给英语老师,她可采用的最合适的方法是 ( )
A.将3个文件分别作为邮件的3个附件,一次发送出去
B.将3个文件放人“英语作业”文件夹,再将“英语作业”文件夹作为附件,一次发送
C.将3个文件压缩打包为一个文件,作为邮件的附件发送
D.将3个文件分别作为3个邮件的附件,分别发送
二、问题求解(共2题,每空5分,共计10分)
1.5个碗排成一排,有的碗口朝上,有的碗口朝下。你可以按以下三种方案进行操作:
方案1:将第1、第2二个碗同时做一个翻碗操作,即原来是碗口朝上的改为碗口朝下、原来碗口朝下的改为碗口朝上。
方案2:将第4、第5二个碗同时做一个翻碗操作,即原来是碗口朝上的改为碗口朝下、原来碗口朝下的改为碗口朝上。
方案3:将连续三个碗一起做一个翻碗操作。
现在让你将初始状态的一排碗使用若干次操作后将所有碗都成为碗口朝上的状态。若用0、1分别代表碗口的朝上和朝下状态,则初始状态11111可以通过方案3、方案2这二个操作达到所有碗都碗口朝上的目标状态(00000)。问:是否存在某种初始状态,无论你如何操作都无法达到目标状态(所有碗的碗口都朝上)?
(1)回答“有”或者“没有”。
(2)如果有则写出一种初始状态的二进制01串化为十进制后的值,若没有则写出理由。
2.玩扑克是一项老少皆宜的娱乐活动,其中有很多种玩法,今天我们来玩一种新的:就是在去掉大小王后的52张打乱的牌中,随意进行抽取,直到你的手中的牌里有一副顺子(即23456或678910或10JQKA或……,注意顺子中A与2不能相连,而且顺子至少包含5张牌)。问,至少抽几张可以保证手中的牌中一定有顺子存在?
三、阅读程序写结果(共4题,每题8分,共计32分)
1.
var a,b,c,d: integer;
begin
readln(a, b);
c:=a*b;
while (a mod b<>0) do begin
d:=b;
b:=a mod b;
a:=d;
end;
d:=b;
c:=c div d;
writeln(c);
end.
输入1: 3 2 输出1:___________
输入2: 63 49 输出2:___________
2.
var j,n,i,k,res: integer;
a:array[1..100] of integer;
begin
readln(j, n);
fillchar(a,sizeof(a),0);
i:=1;res:=n;
repeat
k:=res mod j;
a[i]:=k;
res:=res div j;
inc(i);
until res=0;
for k:=i-1 downto 1 do write(a[k]);
end.
输入1:3 2 输出1:_______
输入2:9 2012 输出2:_______
3.
var a:array[1..100] of longint;
i,j,n,k,tot,ave,min:longint;
begin
readln(n);
tot:=0;
for i:=1 to n do begin
read(a[i]);
tot:=tot+a[i];
end;
ave:=tot div n;
min:=0;
i:=1;
repeat
if a[i]<>ave then begin
a[i+1]:=a[i+1]+a[i]-ave;
a[i]:=ave;
inc(min);
end;
inc(i);
until i=n;
writeln(min);
end.
输入:10 输出:_______
9 8 17 6 5 0 34 11 2 8
4.
const maxn=100;
var dp:array[1..maxn] of integer;
av:array[1..10] of integer;
n,i,j,k,min:integer;
begin
for i:=1 to 10 do read(av[i]);readln;
readln(n);
fillchar(dp,sizeof(dp),0);
dp[1]:=av[1];
for i:=2 to n do begin
if i<=10 then begin
min:=av[i];
for j:=1 to i-1 do
if min>(dp[j]+dp[i-j]) then min:=dp[j]+dp[i-j]
end
else begin
min:=30000;
for j:=1 to i-1 do
if min>(dp[j]+dp[i-j]) then min:=dp[j]+dp[i-j]
end;
dp[i]:=min;
end;
writeln(dp[n]);
end.
输入:16 32 45 61 76 89 104 121 133 159 输出:_______
20
四、完善程序(前4空,每空2.5分;后6空,每空3分,共28分)
1.(冗余关系)有一篇作文,第一行表示作文中的句子数目n和人物数目m,下面n句(每句一行)描述人物关系的句子,描述了m个人的关系(n<=1000)。每条句子的格式为:X Y。它的意思是:X认识Y, Y也认识X。现在要你求出文中冗余关系的数目。注意: 假如A认识B,B认识C,则A也认识C。冗余关系的定义是指:即使没有这条关系,原图的所有关系照样成立。
例如输入数据为:
3 4
1 4
1 3
4 3
则输出为:1
输出结果说明:共有1个句子冗余(最后一句)。因为4和3的相识关系可从前面两句推出。请完善下面程序。
const maxnm=1000;
var
n,m,i,j,k,t,tot,tmp:integer;
a:array[1..maxnm] of integer;
begin
readln(n,m);
tot:=0;
for i:=1 to m do
(1);
for k:=1 to n do begin
readln(i,j);
if a[i]=a[j] then
(2)
else begin
if a[i]
tmp:=a[j];
for t:=1 to m do
if a[t]=tmp then (3);
end
else begin
tmp:=a[i];
for t:=1 to m do
if a[t]=tmp then (4);
end;
end;
end;
writeln(tot);
end.
2. (统计数字群个数) 某矩阵由数字0到9组成,其中0表示隔板(无法通过),数字1到9表示可以通过。一个数字群为:从某个数字非0数字出发,沿着可通行数字所能到达的所有数字(行走方向可以是上下左右),这些相互能到达的数字即组成同一数字群。给出矩阵,统计该矩阵包含的数字群的个数。
输入数据第一行表示矩阵的行数m和列数n,接下来m行,每行有连续的n个字符,每个字符均为数字0到9。输出数据只有一个,即该矩阵中包含的数字群个数。
例如输入数据如下:
0
0
1
2
3
4
0
0
0
0
1
0
0
3
0
0
0
8
0
7
9
0
0
0
6
0
0
第1个群:5个数字
第2个群:
3个数字
第3个群:
1个数字8
第4个群:
1个数字63 8
01234000
10030008
79000600
则输出数据如下:
4
请完善下面程序。
const maxm=50; maxn=80;
var
m,n,i,j,k,tot:integer;
a:array[1..maxm,1..maxn] of 0..1;
b:array[1..4000,1..2] of integer;
st:string;
procedure bfs(p,q:integer);
var x,y,f,t:integer;
begin
f:=1;t:=1;
b[t,1]:=p;b[t,2]:=q;
a[p,q]:=0;
inc(t);
repeat
for k:=1 to 4 do begin
if k=1 then begin x:=p+1;y:=q; end;
if k=2 then begin x:=p;y:=q+1; end;
if k=3 then begin x:=p-1;y:=q; end;
if k=4 then begin x:=p;y:=q-1; end;
if (x>0) and (x<=m) and (y>0) and (y<=n) and (a[x,y]=1) then begin
b[t,1]:=x;
b[t,2]:=y;
(5)
inc(t);
end;
end;
(6);
p:=b[f,1];q:=b[f,2];
(7);
end;
begin
readln(m,n);
fillchar(a,sizeof(a),0);
for i:=1 to m do begin
readln(st);
for j:=1 to n do
if (8) then a[i,j]:=1
end;
tot:=0;
for i:=1 to m do
for j:=1 to n do
if (9) then begin
bfs(i,j);
(10);
end;
writeln(tot);
end.
电子材料下载: