宁波市25届小学生计算机,宁波市第25届小学生计算机程序设计竞赛试题和答案.doc...

宁波市第25届中小学生程序设计竞赛

小学组初赛试题

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

1、在宁波市中小学生程序设计比赛复赛(上机编程)时,以下不能使用的编程语言是:

(A)Turbo Pascal (B)Free Pascal (C)C (D)C++

2、在Free Pascal中按功能键F7或F4时,以下叙述正确的是:

(A)F4逐条语句执行(包括子程序),F7运行至光标位置

(B)F7逐条语句执行(包括子程序),F4运行至光标位置

(C)F4逐条语句执行(不包括子程序),F7运行至光标位置

(D)F7逐条语句执行(不包括子程序),F4运行至光标位置

3、使用高级语言编写的程序称之为:

(A)源程序 (B)编辑程序 (C)编译程序 (D)链接程序

4、如果自己的程序进入了死循环,应当按什么键终止?

(A)Ctrl+C (B)Ctrl+D (C)Alt+C (D)Alt+D

5、参加宁波市中小学生程序设计比赛复赛(上机编程)时,以下哪种行为是允许的?

(A)访问互联网或局域网 (B)使用U盘或光盘

(C)使用自带的草稿纸 (D)考试时发现机器有问题,举手示意监考人员处理

6、参加宁波市中小学生程序设计比赛复赛(上机编程)时,你有一个程序被判0分。你发现程序其实是正确的,但存在以下问题,提出申诉,以下哪个申诉会被接受?

(A)源程序文件名和存放源程序的目录名错误

(B)只是存放源程序的目录名错误,源程序文件名是正确的

(C)存放源程序的目录名正确,源程序文件名是错误的

(D)根据比赛规则,以上申斥都不会被接受

7、在Free Pascal语言,以下关于各种数据类型占内存空间大小的描述错误的是:

(A)每个intege型占2个字节 (B)每个longint型占4个字节

(C)每个boolean型占2个字节 (D)每个extended型占10个字节

8、关键码相同的二个元素,原来在排在前面的还能保证排在前面,这种排序算法我们称它是稳定的。冒泡排序、选择排序、插入排序中,一般意义上是稳定的有几种:

(A)1 (B)2 (C)3 (D)0

9、在Free Pascal中编辑当前源程序时,可以使用快捷键Ctrl+F7增加调试程序时监视的变量,但如果不小心错按为Ctrl+F6时,会将当前源程序窗口隐藏起来。此时,可以使用菜单命令“Windows/List”调出Windows List对话框,在该对话框中选中隐藏的当前正在编辑的源程序,然后按下面哪个命令按钮可以显示当前正在编辑的源程序?

(A)Ok (B)Not Hide (C)Show (D)Delete

10、结构化程序设计的三种基本控制结构为顺序结构、选择结构和循环结构,以下说法正确的是:

(A)三种结构都是基本结构,内部不能再有其它结构

(B)三种结构都是基本结构,内部除了允许嵌套同一种结构外,不能再有其它结构

(C)选择结构和循环结构内部可以嵌套有其它结构,顺序结构不可以嵌套其它结构

(D)三种结构内部都可以嵌套其它结构

11、以下属于计算机的基本指令的是:

(A)数值和逻辑运算指令 (B)存储和输入输出指令(C)控制和转移指令 (D)以上都是

12、以下属于汉字输出时使用的编码的是:

(A)国标码 (B)区位码 (C)字形码 (D)五笔字形

13、以下存储介质中,一般说来存取速度最快的是:

(A)硬盘 (B)内存 (C)U盘 (D)光盘

14、以下主要用来网页制作的是:

(A)BASIC (B)Pascal (C)FrontPage (D)HTML

15、标准ASCII码最多能表示的字符个数是:

(A)128 (B)64 (C)256 (D)8

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

1、一副扑克牌除去大小王外,有52张牌。其中有黑桃(Spade)、红心(Heart)、方块(Diamond)、梅花(Club)四种花色,每种花色点数从小到大各有13张,它们是:2、3、4、5、6、7、8、9、10、J、Q、K。

在上述52张中任取5张,取得炸弹(four of a kind,即四张点数相同的牌加一张另外点数的牌)的取法数有13*48=624种;取得辅鲁(full house,即三张点数相同另加二张点数相同牌)的取法数有多少种?请注意,二种取法中,只要有一张牌花色不同或点数不同,这二种取法就是不同的。

2、有若干堆硬币,甲乙二人参加游戏,游戏规则如下:

(1)由甲开始,二人轮流取硬币,每次取时只能从某一堆中取若干个硬币,可以把该堆硬币全部取完,最少可以只取一个硬币,但不能不取硬币。

(2)最后取完最后一个硬币的人为胜者。

比如一开始有二堆硬币,第一堆1枚,第二堆2枚,有几种取法:

(1)甲取第一堆1枚,乙取第二堆1枚,甲取第二堆1枚,甲获胜!

(2)甲取第一堆1枚,乙取第二堆2枚,乙获胜!

(3)甲取第二堆1枚,乙取第一堆1枚,甲取第二堆1枚,甲获胜!

(4)甲取第二堆1枚,乙取第二堆1枚,甲取第一堆1枚,甲获胜!

(5)甲取第二堆2枚,乙取第一堆1枚,乙获胜!

显然,当甲先取第二堆1枚时,甲能获胜!当甲采取其它取法时,当乙取对时,甲会失败的。但如果一开始二堆硬币数都为2枚,则甲无论在哪一堆中取多少个,乙可以在另外一堆中取同样多个,乙获胜,甲失败。

现在有三堆硬币,第1堆有2枚硬币,第2堆有4枚硬币,第3堆有5枚硬币。问甲先取,在大家都使用最佳方法的情况下,甲能否获胜?如果甲能获胜,请写出第一次在第几堆取多少枚硬币才能获胜?如果不能获胜,则只要写上“No”。

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

第1题:

program xx2010_1;

var i,j,s:longint;prime:boolean;

begin

for i:=2 to 20 do begin

prime:=true;

for j:=2 to i-1 do

if i mod j=0 then begin

prime:=false;

break;

end;

if prime then s:=s+1;

【输出】:______________

end;

writeln(s);

end.

第2题:

Program xx2010_2;

var a,b,c,d,n,i,j:longint;find:boolean;

f:array[0..9]of longint;

begin

f[0]:=2;f[1]:=3;f[2]:=5;f[3]:=7;f[4]:=11;

f[5]:=13;f[6]:=17;f[7]:=19;f[8]:=23;f[9]:=29;

readln(a,b,c,d);

n:=10;

a:=((f[a]*f[b]-f[c]*f[d]) mod n+n) mod n;

b:=((f[b]* f[c]-f[d]* f[a]) mod n+n) mod n;

c:=((f[c]* f[d]-f[a]* f[b]) mod n+n) mod n;

d:=((f[d]* f[a]-f[b]* f[c]) mod n+n) mod n;

writeln(a,' ',b,' ',c,' ',d);

end.

【输出】:______________

【输入】:2 3 5 7

第3题:

Program xx2010_3;

var a:array[1..30]of longint;

s,n,i,x,y,z:longint;c:char;

begin

readln(x,y);

readln(z);

n:=0;

while z>0 do begin

n:=n+1;a[n]:=z mod 10;z:=z div 10;

end;

s:=0;

for i:=n downto 1 do s:=s*x+a[i];

writeln(s);

n:=0;

while s>0 do begin

n:=n+1;a[n]:=s mod y;s:=s div y;

end;

for i:=n downto 1 do write(a[i]);

writeln;

end.

【输出】:

__________

__________

【输入】:

7 2

126

第4题:

Program xx2010_4;

var f:array[1..46]of longint;

a:array[1..100]of longint;

x,y,z,i,j,n,count:longint;

function find(i,h,x:longint):longint;

var m:longint;

begin

if i<3 then find:=0

else begin

m:=h+f[i-1]-1;

count:=count+1;

if x=a[m] then find:=m

else if x='0')and(s[i]<='9') then //第i个字符是数字

x:=x*10+ord(s[i])-ord('0') //得到连续数字表示的整数值,存储在变量x中

else begin

if x<>0 then begin //前面已经得到正整数值,当前数字x进入数字栈

tn:=tn+1;num[tn]:=x; x:=0;end;

if s[i]='(' then begin //第i个字符为左括号,入符号栈

tc:=tc+1;code[tc]:=s[i];end

else if s[i]=')' then begin //第i个字符为右括号

while ⑦ do begin

tn:=tn-1;

num[tn]:= ⑧ ;

tc:=tc-1;

end;

⑨ ;

end else begin //第i个字符为+,-,*

while prio(code[tc],s[i]) do begin

tn:=tn-1;

num[tn]:= ⑧ ;

tc:=tc-1;

end;

tc:=tc+1;

⑩ ;

end;

end;

end;

writeln( ⑾ );

end.

宁波市第25届中小学计算机程序设计竞赛

小 学 组 初 赛 答 案

一、单项选择题(每题1.5分,共计30分)

1

2

3

4

5

6

7

8

9

10

A

B

A

A

D

D

C

B

A或C

D

11

12

13

14

15

D

C

B

C

A

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

1、13*6*12*4=3744 2、第1堆取1枚

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

1、8_______ __ 2、8 4 4 6

3、69________________ 4、5 2 ________________

1000101___________ 0 4________________

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

① n:=1 _______________

②(i<=n1) and (j<=n2)必须有二个括号,and前后可以没有空格,前后可以再加一个括号

③ a1[i]+a2[j]或a2[j]+a1[i]

④ b1[i]或b2[j] _________

⑤ n:=n-1或dec(n)或dec(n,1) _____

⑥ s:='('+s+')' ____ ⑦ code[tc]<>'(' 前后可以有括号

⑧cal(num[tn],num[tn+1],code[tc])⑨tc:=tc-1或dec(tc)或dec(tc,1)

⑩ code[tc]:=s[i]________

⑾ num[1]:0:0___________

展开阅读全文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值