当前位置:文档之家› 2011第九届绍兴市少儿信息学竞赛初赛试题

2011第九届绍兴市少儿信息学竞赛初赛试题

2011第九届绍兴市少儿信息学竞赛初赛试题
2011第九届绍兴市少儿信息学竞赛初赛试题

第九届绍兴市少儿信息学竞赛

初赛试题

(小学组PASCAL语言二小时完成),

●●全部试题答案都要求写在答卷纸上,写在试卷上一律无效●●

一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题2分,每题只有一个正确答案,多选无分。共30分)

1) “图灵奖”是计算机科学界的诺贝尔奖。迄今为止,我国只有一位科学家获得该项殊荣。这位科学家是()

A) 盖茨 B) 姚期智 C) 李开复 D) 王江明

2) 文件都以一个个的图标呈现、通过对这驻图标的操作可以实现对文件的各种操作(打开、复制、粘贴等)、把文件图标拖放到“回收站”中就可以完成文件删除......这些我们目前在微软公司的Windows操作系统中熟知的技术称为“图形用户界而”。早期的计算机使用可没这么方便,而是晦涩难懂的命令用户界面(如下图-1所示)。

图-1

前面所述典型的图形用户界面技术并不是微软公司首创的。最早将这种图形用户界面H 用到它们自己生产计算机上的公司是()

A) IBM公司B)苹果公司C) Sun公司D) 德州仪器

3) 班级进行班长竞选,需要集成介绍自己的文字、照片材料,并将这些材料在自己演讲时通过教室里连接了计算机的大屏蒂投影机演示。制作这个材料最合适的软件是()

4) 小薇要将自己计算机硬盘中一张电子贺卡(图像文件)以电子邮件的附件形式发送给朋友(操作界面如图-2所示)。为了将该图像文件作为附件添加到邮件中,应选择的操作是

( )

A) 1 B) 2 C) 3 D) 4

5) 为了将浏览网页时看到的图片保存到自己的计算机上,可以

将鼠标移到该图片上,单击鼠标右键,然后在如图-3所示的快

捷菜单中选择菜单命令()

A) 打开链接

B) 电子邮件图片

C) 图片另存为

D) 在新窗口中打开链接

6) 下列有关信息使用的行为,最恰当的是()

A)为了“偷菜”,拼命将各种人加为QQ好友

B)将自己旅游所拍的风景照传到网上和朋友共享。

C)在网上下载黑客软件,用以攻击对中国

D)在个人网上日志中公布自己班级同学有敌对行为的政府网站的家庭电话。

7) 为了给自己的QQ设置密码,下列密码中安全性最好的是()

A) Fhjts345QWBK B) qq2011 C) 123456 D) wangqiang

8) 在下列计算机硬件设备中,承担“计算”任务的设备是()

A) CPU B)内存C)硬盘 D)光驱

9) 在pascal中,“SHR x”命令的作用是将一个数对应的二进制数各位置上的数字右移x个位置,前面(高位)新位置用零补充。如对二进制数(01100011) 2执行“SHR 2”命令后的结果就是(00011000)2。则,对十进制数23执行命令“SHR 2”后结果为()

A) (92)10 B) (21)10 C) (00000101)2 D) (101)10

10) 二进制加法表达式(1001)2+ (1101)2的计算结果为()

A) (22)2B) (11)10C) (0110)2 D) (22)10

11) 如图-4所示,有数字队列1, 2, 3, 4, ...,9,按照堆栈操作序列“进、进、进、出、进、出、进、出”对右边队列中的数字逐个进行操作。上述操作结束后,堆栈左边队列中存在数字依次为(自左往右)()

A) 321 B) 125 C) 345 D) 123

12) 有K列处理步骒:

①输出变量s的值

②S初始化为零

③输入正整数n

④循环变量i从1逐次增加1,直到变为n。i每变一次就执行一次“s:=s+i”

若要计算1+2+3+....+n的和并输出,则上述步骤正确的排列顺序是()

A)①②③④ B)③②④① C) ③①②④ D) ②④③①

13) 计算机科学中的“图”指的是“有几个点和边组成的特殊图形(如下图-5所示),其中内有数字的圆圈表示点,点之间的直线叫做边”。

我们可用二维数组a[i,j]来表示该图中点之间的关系:

如果点i和j之间有边直接相连,则让a[i,j]=l (当然a[j,i]也为1),否则让a[i,j]=0(当然a[j,i]也为零)。按照这种方法来表示图-5所示的图,则有a[l,2[=l,a[l,3]=0,……,那么 a[2,l], a[3,2],a[2,4], a[4,5]的值应该依次为()

A) 1010 B) 1111 C) 0000 D) 0101

14) 下表是对原始数列“34, 12, 23, 26, 15, 8, 48”进行从小到大样序的过程(采用冒泡

排序),按照下表信息以及冒泡排序算法的思想,则表中第三趟冒泡结束时的数列应为

原始数列34, 12, 23, 26, 15, 8, 48

第一趟冒泡结束后的数列8,34,12, 23, 26, 15, 48

第二趟冒泡结束后的数列8, 12, 34, 15, 23, 26, 48

第三趟冒泡结束后的数列

第四趟冒泡结束后的数列8, 12, 15, 23, 34, 26, 48

…………

A) 8, 12,15, 23, 34, 26, 48 B) 8, 12,15, 34, 23, 26, 48

C) 8, 12, 15, 23, 26, 34, 48 D) 8, 12, 15, 48, 34, 26, 23

15) “全国青少年信息学奥林匹克竞赛”的英文缩写是()

A)IOI B) NOIP C) NOI D) ACM/ICPC

二、根据要求回答问题:(4+6=10分)

1.最少公路造价。某市想在6个区域之间建造若干条公路(如图所示,带数字的圆圈表示区域,虚线表示计划可能建造的所有公路,边上的数字表示该段公路建造需要的资金数目),使得任何两个区域之间都能通过若千条公路到达。比如,图-7所示就是第一种满足要求的公路建造方案,一共需要建造5条公路,总的建造价格是37:图-8所示是第二种满足要求的方案,一共需要建造5条公路,总的建造价格是39。显然,第一种建造方案更省钱。

问:(1)满足要求的公路建造方案中,最少需要建造条公路。

(2)在所有满足要求的公路建造方案中,最省钱的方案所需要的费用是。

2.切蛋糕。当我们刀锋向下在一个蛋糕上从上往下切一刀时,可以知道蛋糕上表痕迹如图-9辦示,此时将蛋糕切成了2块。如果继续切一刀(一共切了 2刀),我们知道可以分别有如图-10和图-11所示的两种情形。显然,图-11所示的蛋糕被切成了更多的块数(图-10所示被切成

3

块,图-11所示被切成4块)。

问:(1)按上述方法一共切4刀,蛋糕最多能被切成的块数为

。 (2)至少切 刀,蛋糕能被切成56块。 三、阅读程序并写出运行结果(8+8+8+8=32分):

1.先自学阅读材料,然后分析程序并写出程序运行结果。 【阅读材料】在PASCAL 语言中,分支结构语句除了 IF 语句之外还有CASE 语句,CASE 语句的使用格式如下: Case 表达式 of 常数表1:语句1;

常数表2:语句2; ……;

Else 语句n; End;

程序运行时先计算表达式的值,如果表达式的值在常数表1中则执行语句1,然后退出case 语句;如果表达式的值在常数表2中则执行语句2,然后退出case 语句;......;如果表达式的值在前面所有常量表中都没有出现则执行else 后面的语句n ,然后退出case 语句。 program test_2011_1; var

x, y, s: integer; begin

readln(x, y); case x mod y of 1, 2:s:=l; 0:s:=3; else s:=2; end;

writeln(s); end.

(2)输入:123 8 输出:

(1)输入:12 3 输出:

2.program test_2011_2;

var

x,y:integer;

begin

x:=12; y:=31;

x:=x+y; y:=x-y; x:=x-y;

write(x,‘’,y);

end.

输出:

3.Program test_2011_3;

var

sum:array[0..10, 0..10] of integer;

s,num:array[1.. 10] of integer;

a, b, c, d, n, m, ans, now, i, j: integer;

begin

readln(n, m);

for i:=l to 10 do s[i]:=0;

for i:=0 to 10 do

for j:=0 to 10 do sum[i, j]:=0;

for a := 1 to n do

begin

for b := 1 to m do

begin

read(num[b]);

s[b]:=s[b] + num[b];

sum [a, b] := sum[a, b-l] + s[b];

end;

readln;

end;

ans:= -32766;

for a := 1 to n do

for b := 1 to m do

for c := a to n do

for d := b to m do

begin

now:=sum[c, d] - sum[a-1, d] - sum[c, b-1] + sum[a-l, b-1];

if ans < now then ans:= now; end; writeln(ans); end.

(1)输入: 1 3 12 3 -4

输出:

4.program test_2011_4; var

i, j, k, x, n, ans, s: integer; a:array[1..500] of integer; f:boolean; begin

readln (n, x);

for i:=1 to n do read(a[i]); i:=1; j:=n; f:=false; s:=0;

while (i<=j) and not f do begin

k:=trunc((i+j)/2); s:=s+l; if x=a[k] then begin

ans:=k; f:=true; end

else if x

if f then write(ans,’ ’,s) else write(s); end. (1) 输入: 4 11 7 9 11 17 输出: (2) 输入: 20 256

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 101 105 109 110 138 输出:

(2)输入: 3 3

12 -10 21 -2 9 3 1 4 -6

输出:

四、完善程序(根据问题要求和已有程序,在程序空格处填入适当的语句或符号,使程序完整。本题共12+16=28分)

1.【山脉】(3+3+3+3=12分)

绍兴的南部是山区,小薇站在这些山脉的某座山峰上向南眺望,看到的是一座座的山峰。现在小薇告诉你自北向南所有山峰的高度,并且告诉你她目前所在的山峰,当她站在该山峰上向南眺望时一共能看到多少座山峰。为了方便计算,小薇还制定下列规定:

(1)所有的山脉自北向南成一条直线排列。这就意味着如果南部的某座山峰(比如说自北向南的第i座山峰)髙度小于北面的山峰(比如说自北向南的第i-1座,或者也可以是第i-2座,第i-3座...),则南面的这座山峰小薇将无法看到。

(2)如果南面山峰高度等于北面山峰高度,则南面的山峰也无法看到。

输入数据第一行包含两个整数n和x。n表示总的山峰数量(不超过100), x表示小薇当前所在山峰的编号(自北向南顺序编号,x

输出数据包含一行一个整数,表示小薇站在第x座山峰上向南眺望时最多能看到的山峰的个数。

下面是用来解决该问题的程序,请完替程序。

program test)_2011_5;

var

i, h, s, x, n: integer;

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

begin

readln(n, x);

for i:=l to ① do read(a[i]);

s:=② ; h:=a[x+l];

for i:=x+2 to n do begin

if a[i]>③ then

begin

h:=a[i]; ④ ;

end;

end;

write (s);

end.

输入样例1:

104

34 23 35 22 21 19 25 29 3128

输出样例1:

4 //看到的山脉高度依次是:21、25、29、31

输入样例2:

12 3

45 32 44 45 47 48 51 54 54 53 59 61

输出样例2:

7 //看到的山脉高度依次是:45、47、48、51、54、59、61

2.【猪圈】(2+2+3+3+3+3*16分)

小薇的外公有一个养猪场,一共养了C头猪,养猪场里有S个宽度都为1米的猪圈,每个猪圈最多养1头猪。由于年久失修,猪圈前面的木护栏都需要更换了。

木材商最多只能提供给小薇的外公M块木板(每块木板的长度可以任意选择),外公当然想用最少的钱把那些有猪的猪圈前面用木板拦起来9外公想请小薇帮助计算一下,要把那些有猪的猪圈前面用木板拦起来,最少潘要的木板总长度是多少?参加信息学奥赛的小薇当然会用程序来解决这个问题。

己知输入数据的第一行是三个整数M (1<=M<=50), S(1<=S<=200), C (1<=C<=S), 接下来共有C行,每行包含一个整数X (1<=X<=S),表示某头猪所在猪圈的编号。

小薇的程序要求能输出一行一个整数,表示所需木板的最小总长度。

请帮助小薇完善下面的程序。

program test_2011_6;

type arr=array[l.. 10000]of longint;

var a, b:arr;

j,m, c, s, sum:longint;

procedure swap(var x, y:longint);

var

t:longint;

begin

t:=x; ①;②;

end;

begin

readln(m, s, c); sum:=0;

if m>c then writeln( ③ ) else

begin

for i:=l to c do readln(a[i]);

for i:=l to c-1 do

for j:= ④ downto i+1 do

if a[j-l]>a[j] then swap(a[j-l], a[j]);

j:=l;

for i:=l to c-1 do

begin

b[j]:=a[i+l]-a[i];

j:= ⑤;

end;

for i:=l to c-2 do

for j:=c-l downto i+1 do

if b[j-l]>b[j] then swap(b[j-l], b[j]);

for j:=l to c-m do

begin

sum:=sum+b[j];

end;

writeln ( ⑥ );

end;

end.

输入样例1:

2 10 4

2

4

6

8

输出样例2:

6

【样例1数据说明】

由于最多只有两块板可以使用,所以第一块板将2到4号猪圈拦起来,第二块板将6到8号猪圈拦起来,这是需要木板总长度最少的方案,总共需要3+3=6米的长度。

输入样例2:

50 30 6

30

25

5

15

10

20

输出样例2:

6

【样例2数据说明】

由于最多可以使用50块板,而只有6个猪圈有猪。只要选择6块长度都为1米的木板,依次将6个猪圈拦起来即可。最少的总长度就是1+1+1+1+1+1=6米。

(注:可编辑下载,若有不当之处,请指正,谢谢!)

相关主题
文本预览
相关文档 最新文档