2009 义乌年青少年信息学竞赛 初中

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

义乌市2009年青少年信息学竞赛试卷(初中)
(90分钟完成)
●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●
学校姓名
一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题1.5分,共30分)
1. PASCAL程序设计语言的命名,是为了纪念()这位伟大的数学家。

A) 巴赫 B) 冯.诺依曼 C) 帕斯卡 D) 图灵
2.我国研制的银河Ⅲ型的超级计算机通过基准程序的测试,其峰值速度是()
A)80亿次B)100亿次C)130亿次D)150亿次
3.二进制数11011011的十进制值是()。

A)202 B)219 C)193 D)209
4.微型计算机中,控制器的基本功能是()。

A)控制机器各个部件协调工作 B)实现算术运算和逻辑运算C)获取外部信息 D)存放程序和数据
5.以下()不是操作系统软件。

A)Solaris B)Linux C)Windows Vista D)Sybase
6.递归过程或函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。

A)队列 B)多维数组 C)线性表 D)栈
7.计算机网络的主要目的是( )
A)共享资源 B)提高计算精确度 C)提高运行速度 D)增大内存容量
8. 下列数据类型中不是构造类型的是()
A)集合类型 B)数组类型 C)文件类型 D)枚举类型
9. 已知每个real类型的变量需要用4个字节的空间存放,则数组tz,sg:array [1..10] of real共需要占()字节的内存空间。

A)120 B)40 C)80 D)200 10. 要判断长度分别为a,b,c的三条线段能否围成一个直角三角形,下列表达式正确的是()。

A)c*c=a*a+b*b B)c*c=a*a+b*b or a*a=c*c+b*b or b*b=a*a+c*c
C)sqr(c)=sqr(a)+sqr(b) D)c*c=a*a+b*b and a*a=c*c+b*b and b*b=a*a+c*c
11. 下列关于二叉树的描述中,正确的是()
A) 某个结点可以没有子结点、或有1个子结点、或有2个子结点。

B) 根结点可以有3个子结点 C) 根结点可以有4个子结点
D) 任何结点最多都可以有4个子结点
12.已知一个队列中有若干个数(如下图所示),则最后出队的元素是()
A) 12 B) 5 C) 9 D) 32
13. 在利用数组存储数据时,各下标变量的值在内存中是连续存放的。

假定数组a的第一个变量a[1]的存储地址是0,每个a[I]需要占据二个位置(说明a[2]的开始位置是2),则变量a[50]的开始位置是多少()。

A) 100 B) 50 C) 48 D) 98
14. 已知一个堆栈中包含了4个元素,而且知道他们在堆栈中的位置依次是a,b,c,d(从栈底开始往上数),现在让这个堆栈进行连续出栈操作,直到堆栈空,则这些元素的出栈顺序是()A) dcba B) abcd C) abdc D) cdab 15. 冒泡法排序的算法如下:
比较相邻的两个数据,若是逆序,交换两个数据的位置,否则比较下一对,直到将全部序列排好为止。

若用冒泡法将数据1,3,4,5,2按从小到大进行排列,则需要进行数据比较的次数是()。

A) 3 B) 4 C) 5 D) 7
16 .for i:=1 to 5 do
begin
p:=0;
for j:=i downto 1 do p:=p+i;
s:=s+p;
end;
在上面的语句段中,p:=p+i的执行次数是()。

A) 5 B) 9 C) 15 D) 25
17. 将一组数1,2,3,4,……,n依次存放入二维数组P[1..9,1..100]中,问元素50存储在P数组中的位置是()。

A)p[4,5] B)p[5,5] C)p[4,9] D)p[5,9]
18. 即依次将1,2,3,4,5放入一个堆栈中,若第一个出栈元素是3时,第二个出栈元素不可能是()。

A) 1 B)2 C)4 D)5
19. 将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为()。

A)50 B)51 C)70 D)71
20. 在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。

A)二叉树 B)多叉树 C)哈希表 D)二维表
二、问题求解(每题5分,共10分)
1、已知有一个运算符号“☆”,使下列式子成立:8☆7=15;5☆3=7。

问:式子7☆3的值为多少?请写出具体的分析过程(5分)
2、有位小同学喜欢在方阵中填数字,规则是按下图示例从右上角开始,按斜线填数字,
碰到边界就重新。

显然,数字1在坐标(1,5)位置,数字25在坐标(5,1)位置。

后来这位小朋友想知道,对于N阶的方阵,随机取一个位置(x,y),并规定x≤y,问这个位置上应该填的数字是多少? 请写出具体的分析过程。

5阶方阵的示例图如下:
11 7 4 2 1
16 12 8 5 3
20 17 13 9 6
23 21 18 14 10
25 24 22 19 15
三.阅读程序写结果(共4题,每题8分,共计32分)
1、-------------------------------------------
program cz01;
var a,b,c:integer;
procedure foo(var a:integer; b,c:integer);
begin
inc(a);
if a>b then foo(c,a,b)
else write(a,b,c);
end;
begin
read(a,b,c);
foo(a,b,c);
write(a,b,c);
end.
输入:3 1 2
输出:
program cz02;
var time,hour,minutes : integer;
begin
readln (time);
hour:= (time div 100) mod 12;
if hour = 0 then hour:= 12;
write (hour:2,':');
minutes := (time mod 100) mod 60;
if minutes<10 then
write ('0',minutes:1)
else
write (minutes:2);
if (time<1200) or (time=2400) then writeln ('AM')
else
writeln ('PM')
end.
输入:8866
输出:
3、------------------------------------------- program cz03;
var letter:char;
begin
readln(letter);
case letter<='m' of
true :writeln(succ(letter));
false:writeln(pred(letter)) else
writeln('m')
end;
end.
输入:s
输出:
program cz04;
var i,k,n:integer;
x,w:array[1..500] of integer;
begin
readln(n);
for i:=1 to n do
begin
x[i]:=0;w[i]:=1;
end;
for i:=2 to trunc(sqrt(n))+1 do
if x[i]=0 then
begin
k:=i*i;
while K<=n do
begin
x[k]:=i;
k:=k+i;
end;
end;
for i:=n downto 1 do
if x[i]<>0 then
begin
w[x[i]]:=w[x[i]]+w[i];
w[i div x[i]]:=w[i div x[i]]+w[i];
w[i]:=0;
end;
writeln(w[2],’’,w[3],’’,w[5]);
end.
输入: 20
输出:
四.完善程序 (共28分)
1.某全自动加油站供应93号、97号汽油和0号柴油,其单价分别是6.03、6.54、5.89元/千克。

当然该加油站除了全自动服务外也提供“自己加”和“协助加”服务,这三种服务模式分别可以得到10%(全自动)、5%(自己加)和1%(协助加)的优惠。

编写程序,根据用户输入的加油量、品种、和服务类型,计算应付款。

(每空2分)
【输入数据】:
grade——油的品种,分别用a、b、c表示93号、97号汽油和0号柴油;
amount——加油量(升);
service——服务类型,f表示全自动服务、m表示自己手动服务、e表示工作人员协助服务;
【输出数据】:
cost——应付款;
Var
grade:char;
price,cost:real;
amount:integer;
service:char;
begin
writeln('Enter,a,b or c for gasoline');
readln(grade);
case grade of
'a': ① ;
'b': ② ;
'c': ③ ;
end;
writeln('Enter f, m or h for service');
readln(service);
writeln('Enter the amount in killograms');
readln(amount);
case service of
'f': ④ ;
'm': ⑤ ;
'h': ⑥ ;
end;
writeln('the cost for gasoline is',cost:10:2)
end.
2.哥德巴赫1+1猜想(Goldbach’s Conjecture)(每空3分)
【问题描述】
1742年6月7日哥德巴赫写信给大数学家欧拉,提出一个猜想:每一个大于或等于6的偶数都可表示为两个素数的和。

例如:6=3+3 8=3+5 10=3+7……。

同年6月30日欧拉回信表示他虽不能证明此猜想,但他相信这是完全正确的。

这就是著名的哥德巴赫“1+1”猜想(Goldbach’s Conjecture)。

1973年,我国数学家陈景润证明了“1+2”,这就是所谓的陈氏定理:任何一个大偶数等于一个素数与一个不超过两个素数之积的和。

离哥德巴赫猜想仅有一步之遥。

对于很大的偶数“1+1”尚未有人证明正确,哥德巴赫猜想也未得到彻底的解决。

现在我们用程序来验证一下在6~100之间的所有偶数中,哥德巴赫猜想是正确的:程序中变量I从6循环到100,以存放其间的每一个偶数;为了把I这个偶数表示成两个素数和的形式,我们先找到第一个素数j,然后再判断I-j是不是素数;如果I-j也是素数,那么就找到了一种组合,否则往下找j,使得j和I-j都是素数……直到所有I都验证完为止。

程序中p1为真的时候表示j是素数,p2为真的时候表示I-j为素数,找到一中组合后马上置p为假,表示继续查找下一个偶数的1+1组合
输入:没有输入,仅在6~100的偶数里面验证
输出:两个素数连加的形式,每行5组
【输出样例】
6=3+3 8=3+5 10=3+7 12=5+7 14=3+11
16=3+13 18=5+13 20=3+17 22=3+19 24=5+19
26=3+23 28=5+23 30=3+27 32=3+29 34=3+31
…………………………
【程序】
var
i,j,k,n : integer;
p, p1, p2 : boolean;
begin
i:= ① ; n:=0;
while i<=100 do
begin
j:=3;
p:=true;
while (i-j>=3)and p do
begin
p1:=true;
for k:=2 to j-1 do
if j mod k=0 then p1:= ② ;
if p1 then
begin
p2:=true;
for k:=2 to i-j-1 do
if (i-j)mod k=0 then p2:= ③ ;
if ④ then
begin
p:=false;
n:=n+1;
write(i:2,'=',j:2,'+',i-j:2,' ':4);
if ⑤ =0 then writeln
end
else j:=j+2
end
else j:=j+2
end;
i:= ⑥
end;
end.
义乌市2008年青少年信息学竞赛答题卷(初中)
二、问题求解(每题5分,共10分)
1、
2、
三、阅读程序写结果(共4题,每题8分,共计32分)
1、
2、
3、
4
四、程序填空(共28分)
第1题(每空2分)






第2题(每空3分)



④⑤⑥。

相关文档
最新文档