2014年宁波市第29届中小学生计算机程序设计竞赛小学组初赛试题
2014年宁波市第29届中小学生计算机程序设计竞赛
小学组初赛试题
(说明:答案请写在答题卷上。考试时间120分钟,满分100分)
一、选择题(每题有且仅有一个正确答案,选对得1.5分,选错、不选或多选均不得分)
1. 存放一个ASCII码需要的字节数为
(A)1字节 (B)2字节 (C)0.5字节 (D)4字节 2. 下列软件中不属于操作系统的是
(A)win7 (B)linux (C)winxp (D)winrar 3. 下列数中最小的是
(A)(7)8 (B)(11)7 (C)(15)10 (D)(11)5 4. 世界上第一台电子计算机诞生于
(A)1949 (B)1849 (C)1946 (D)1893
5. 在下面各奖项中,为计算机科学与技术领域作出杰出贡献的科学家设立的奖项是 (A)沃尔夫奖 (B)诺贝尔奖 (C)菲尔兹奖 (D)图灵奖 6. 操作系统的文件夹采用的层次结构为
(A)网状 (B)链状 (C)树状 (D)块状 7. 在pascal语言中,pos(‘a’,’bbccc’)的返回值为
(A)0 (B)-1 (C)5 (D)’a’
8. 在pascal语言中,下列语句属于正确的赋值语句的是
(A)s := 1 (B)s = a+1 (C)a+1 = s (D)a+1 := s 9. 计算圆周长的算法描述如下:
① 输入圆半径r;
② 计算圆周长a(计算公式为a = 2πr); ③ 输出结果; ④ 结束。 该算法属于
(A)枚举算法 (B)递归算法 (C)排序算法 (D)以上都不是
10. 现有一个数列A为1,2,3,另一个数列B为3,2,1,若采用选择排序分别的两个数列实现从小到大排序,则两个数列需要的比较次数为
(A)A比B多 (B)A和B一样多 (C)B比A多 (D)不一定 11. 在下述程序段中,判断语句a <> 100被执行的次数为 a := 99
while a <> 100 do
a := a + 1;
(A)0 (B)1 (C)2 (D)3
第1页 共8页
2014年宁波市第29届中小学生计算机程序设计竞赛小学组初赛试题
12. 下面关于堆栈和队列的说法中错误的是 (A)队列是一种先进先出的线性表
(B)堆栈可以选择栈的任意位置进行弹出操作 (C)堆栈只能选择栈顶进行压入操作 (D)堆栈是一种先进后出的线性表
13. 下列说法中不属于计算机病毒特点的是
(A)破坏性 (B)传染性 (C)潜伏性 (D)抗药性 14. 程序设计的三种基本结构是 (A)主程序、函数、过程
(B)顺序、选择、循环 (C)变量、常量、不定量 (D)数组、字符串、浮点型
15. 下列内容中属于信息的是
(A)报纸 (B)黑板 (C)课本 (D)黑板上的放假通知 16. 在pascal语言中,记录类型用到的保留字为
(A)record (B)struct (C)baidu (D)then
17. 某班有30个同学报名参加100、400、800m 3个运动项目比赛。已知有6人获 100m参赛资格,8人获400m参赛资格,18人获800m参赛资格。且其中有1人获全部3项参赛资格,则至少有( )人没有获任何项目参赛资格。 (A)0 (B)1 (C)2 (D)3
18. 下列pascal语言的函数中,返回值不是数值类型的是
(A)pos (B)copy (C)length (D)abs 19. 下列判断语句中,不能判断x为奇数的是
(A)odd(x) = true (B)odd(x) <> false
(C)x and 1 <> x (D)(x shr 1) shl 1 <> x
20. 小李在递归函数内部定义了一个长度为100的longint数组,但是编译运行却频频报错,请问最有可能的原因是 (A)代码风格不够优美 (B)程序效率太低导致超时
(C)显示器亮度不够
(D)递归层次过多导致栈空间不足
二.问题求解(每小题5分,共10分)
1. 在1到100的100个整数中,能被3整除且不能被4整除的数一共有 个。 2. 定义2个1000*1000的二维长整型数组需要的存储空间为 MB。(保留1位小数)
第2页 共8页
2014年宁波市第29届中小学生计算机程序设计竞赛小学组初赛试题
三、阅读程序写结果(每题8分,共32分)
1. var
x: longint; flag: boolean; begin
read(x);
flag := false;
if (x mod 4 = 0) and (x mod 100 <> 0) then flag := true; if x mod 400 = 0 then flag := true; if flag then writeln(‘leap year!’) else writeln(‘not a leap year!’); end. 输入:1234 输出:
2. var
f: array[1..100, 1..100] of longint; cnt: longint;
i, j, n, t, x, y, ans: longint; begin
read(n); x := 1; y := 0;
for i := 1 to n do begin
for j := 1 to n*2-i+1 do begin
inc(y); inc(cnt);
f[x, y] := cnt; end;
for j := 1 to n*2-i do begin
inc(x); inc(cnt);
f[x, y] := cnt;
end;
for j := 1 to n*2-i do
begin
dec(y); dec(cnt);
第3页 共8页
2014年宁波市第29届中小学生计算机程序设计竞赛小学组初赛试题
f[x, y] := cnt; end;
for j := 1 to n*2-i-1 do begin
dec(x); dec(cnt);
f[x, y] := cnt; end; end;
read(t); ans := 0;
for i := 1 to n*2 do
ans := ans + f[t, i]; writeln(ans); end. 输入:3 2 输出:
3. var
t: longint;
function f(x:longint): longint; begin
if x = 0 then exit(0)
else if x mod 2 = 0 then exit(2 + f(x-1)) else exit(1 + f(x-1)); end; begin
read(t);
writeln(f(t)); end. 输入:2014 输出:
4.
type arr=array[0..100000]of longint; var
c, q, d, e, ans: arr; n, i: longint;
procedure merge(a, b: longint); var
mid, i, j, p: longint; begin
mid := (a+b) div 2;
if a < mid then merge(a, mid);
if mid+1 < b then merge(mid+1, b);
第4页 共8页
2014年宁波市第29届中小学生计算机程序设计竞赛小学组初赛试题
p:=0; i:=a; j:=mid+1;
while (i <= mid) and (j <= b) do begin
if c[i] >= c[j] then begin
p := p+1; d[p] := c[i]; e[p] := q[i]; i := i+1; end else begin
p := p+1; d[p] := c[j]; e[p] := q[j]; j := j+1; inc(ans[e[p]], mid-i+1); end; end;
while (i <= mid) and (j > b) do begin
p := p+1; d[p] := c[i]; e[p] := q[i]; i := i+1; end;
while (i > mid) and (j <= b) do begin
p := p+1; d[p] := c[j]; e[p] := q[j]; j := j+1; end;
for i := a to b do begin
c[i] := d[i-a+1]; q[i] := e[i-a+1]; end; end; begin
readln(n);
for i := 1 to n do begin
read(c[i]); q[i] := i; end;
merge(1, n);
for i := 1 to n-1 do
write(ans[i], ’,’); writeln(ans[n]); end. 输入: 5
4 3 1 2 5 输出:
第5页 共8页