宁波市第24届中小学生计算机程序设计竞赛
一、选择题(1.5每题)
1、以下不属于程序的基本结构的是: 顺序结构 循环结构
2、由2个a,2个b和2个c构成的所有字符串中,包含子串“abc”的共有( )个。 20
3、假设A=TRUE,B=TRUE ,C=TRUE, D=FALSE,逻辑运算表达式A and B or C and D 的值是: false true
4、下列数种最大的数是( ) (11111)2
5、布尔型(boolean)和字符型(char)变量所占用的存储的空间大小关系是( ) 布尔型大
6、用八位二进制可以表示的最大二进制数是:( ) 99999999
7、有一个10行10列的对称矩阵,采用压缩存储方式来存储该矩阵的上三角元素(行优先次序),第1行第1列的存储地址为s,每个元素占用2个存储空间,则第8行第8列元素的首地址为:( ) s+100
8、已知一棵二叉树的前序遍历为JFDECBHAIG,中序遍历结果为DFEJAHBICG,则这棵二叉树的深度为:
6
5
4
3
s+98
s+72
s+70
11111111
255
265
字符型大
一样大
因操作系统而异
(F)16
(30)10
(35)8
0
1
8
16
24
选择分支结构 树形结构
9、已知一棵二叉树的叶子节点数为100,在有二个子女的结点数为: 101
10、算术表达式(3a+1)÷5在程序设计中表达为
11、将数组{ 1、2、4、3、5、6、7、8 }中的元素用插入排序的方法从大到小的顺序排列,需要比较的次数是: 7
12、算式(2009)16-(2008)10-(2007)8 的结果是:( ) (16170)8
100 99 不能确定
3a?1 5 (3a+1)/5 (3*a+1)\\5 (3*a+1)/5
27 28 64
(7234)10 (1C36)16 (1110000111000)2
13、计算机内部使用的数是: 二进制数
14、当n大于100万时,下列程序段哪个运行最快: (A). max:=0; for k:=1 to n-1 do for j:=k+1 to n do if max 八进制数 十进制数 十六进制数 (C). sum:=0; k:=1; while begin for j:=1 to n do sum:=sum+1; k<=n do (D). k:=1; j:=n; x:=a[1]; while k 15、当原始待排序数据为从小到大排列时,运行时间比原来数据为乱序时快的算法是: 选择排序 16、关于算法的下列叙述不正确的是: A、算法的每一步必须没有歧义,不能有半点含糊 B、算法必须有输入 C、同一问题可能存在多种不同的算法 D、同一算法可以用多种不同的形式来描述 17、for语句中的循环变量,其类型必须是: A、整型 18、下列各种奖项中,为计算机领域作出杰出贡献的科学家设立的奖项是: A 沃尔夫奖 19、栈是一种后进先出的数据结构,他有压入(push)和弹出(pop)两种操作。二个元素AB通过入栈和出栈操作,可以有AB和BA两种可能。现在3个元素ABC依次进栈、出栈序列最终有几种可能( ) A 3 20、以下哪项不属于计算机程序设计竞赛( ) A NOIP B 电子作品制作 B 4 C 5 D 6 B 图灵奖 C 诺贝尔奖 D 菲尔兹奖 B、实型 C、自定义类型 D 有序类型 归并排序 插入排序 快速排序 C ACM大学生程序设计赛 D 宁波市中小学生程序设计竞赛 二、问题求解(每小题5分) 1、已知a,b,c,d,e,f,g七个人中,a会讲英语和汉语,c会讲英语、意大利语和俄语, d会讲汉语和日语, e会讲意大利语和德语, f会讲俄语、日语和法语, g会讲德语和法语。能否将他们的座位安排在圆桌旁,使得每个人都能与他的身边人 交谈,如果可以,请以“a b”开头写出你的安排方案: a d f g e c b 2、某班有30个同学报名参加100米、400米、800米三项比赛,已知有15人报了100米,8人报了400米,6人报了800米,其中有3人这三个项目都报了,问该班最少有 人一项都没有报过?最多有 人一项都没有报过? 三、阅读程序写结果(每题8分,共32分) program nbxx09_1; var a,b,s:longint; begin readln(a); s:=a; b:=0; while a<>b do begin b:=b*10+a mod 10; a:=a div 10; end; s:=s+b; writeln(s); end; 输入:123456789 输出: program nbxx09_2; 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); z:=(a+b+c-x-y)*2; if((x+y) mod 2=0) then z:=(a+b+c+x+y) div 2; writeln(x+y-z); end; 输入:2 5 7 4 输出 program nbxx09_3; var a,work:array[1..100] of integer; i,j,x,d,max:integer; begin readln(max); for i:=1 to max do begin read(a[i]); work[i]:=a[i]; end; d:=max div 2; while d>=1 do begin for i:=d+1 to max do begin x:=work[i]; j:=i-d; while (j>0) and (x