义乌年青少年信息学竞赛 初中.docx
《义乌年青少年信息学竞赛 初中.docx》由会员分享,可在线阅读,更多相关《义乌年青少年信息学竞赛 初中.docx(12页珍藏版)》请在冰豆网上搜索。
义乌年青少年信息学竞赛初中
义乌市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)SolarisB)LinuxC)WindowsVistaD)Sybase
6.递归过程或函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。
A)队列B)多维数组C)线性表D)栈
7.计算机网络的主要目的是()
A)共享资源B)提高计算精确度C)提高运行速度D)增大内存容量
8.下列数据类型中不是构造类型的是()
A)集合类型B)数组类型C)文件类型D)枚举类型
9.已知每个real类型的变量需要用4个字节的空间存放,则数组tz,sg:
array[1..10]ofreal共需要占()字节的内存空间。
A)120B)40C)80D)200
10.要判断长度分别为a,b,c的三条线段能否围成一个直角三角形,下列表达式正确的是()。
A)c*c=a*a+b*bB)c*c=a*a+b*bora*a=c*c+b*borb*b=a*a+c*c
C)sqr(c)=sqr(a)+sqr(b)D)c*c=a*a+b*banda*a=c*c+b*bandb*b=a*a+c*c
11.下列关于二叉树的描述中,正确的是()
A)某个结点可以没有子结点、或有1个子结点、或有2个子结点。
B)根结点可以有3个子结点C)根结点可以有4个子结点
D)任何结点最多都可以有4个子结点
12.已知一个队列中有若干个数(如下图所示),则最后出队的元素是()
A)12B)5C)9D)32
13.在利用数组存储数据时,各下标变量的值在内存中是连续存放的。
假定数组a的第一个变量a[1]的存储地址是0,每个a[I]需要占据二个位置(说明a[2]的开始位置是2),则变量a[50]的开始位置是多少()。
A)100B)50C)48D)98
14.已知一个堆栈中包含了4个元素,而且知道他们在堆栈中的位置依次是a,b,c,d(从栈底开始往上数),现在让这个堆栈进行连续出栈操作,直到堆栈空,则这些元素的出栈顺序是()A)dcbaB)abcdC)abdcD)cdab
15.冒泡法排序的算法如下:
比较相邻的两个数据,若是逆序,交换两个数据的位置,否则比较下一对,直到将全部序列排好为止。
若用冒泡法将数据1,3,4,5,2按从小到大进行排列,则需要进行数据比较的次数是()。
A)3B)4C)5D)7
16.fori:
=1to5do
begin
p:
=0;
forj:
=idownto1dop:
=p+i;
s:
=s+p;
end;
在上面的语句段中,p:
=p+i的执行次数是()。
A)5B)9C)15D)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)1B)2C)4D)5
19.将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为()。
A)50B)51C)70D)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、-------------------------------------------
programcz01;
vara,b,c:
integer;
procedurefoo(vara:
integer;b,c:
integer);
begin
inc(a);
ifa>bthenfoo(c,a,b)
elsewrite(a,b,c);
end;
begin
read(a,b,c);
foo(a,b,c);
write(a,b,c);
end.
输入:
312
输出:
2、-------------------------------------------
programcz02;
vartime,hour,minutes:
integer;
begin
readln(time);
hour:
=(timediv100)mod12;
ifhour=0thenhour:
=12;
write(hour:
2,':
');
minutes:
=(timemod100)mod60;
ifminutes<10then
write('0',minutes:
1)
else
write(minutes:
2);
if(time<1200)or(time=2400)then
writeln('AM')
else
writeln('PM')
end.
输入:
8866
输出:
3、-------------------------------------------
programcz03;
varletter:
char;
begin
readln(letter);
caseletter<='m'of
true:
writeln(succ(letter));
false:
writeln(pred(letter))
else
writeln('m')
end;
end.
输入:
s
输出:
4、-------------------------------------------
programcz04;
vari,k,n:
integer;
x,w:
array[1..500]ofinteger;
begin
readln(n);
fori:
=1tondo
begin
x[i]:
=0;w[i]:
=1;
end;
fori:
=2totrunc(sqrt(n))+1do
ifx[i]=0then
begin
k:
=i*i;
whileK<=ndo
begin
x[k]:
=i;
k:
=k+i;
end;
end;
fori:
=ndownto1do
ifx[i]<>0then
begin
w[x[i]]:
=w[x[i]]+w[i];
w[idivx[i]]:
=w[idivx[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,borcforgasoline');
readln(grade);
casegradeof
'a':
①;
'b':
②;
'c':
③;
end;
writeln('Enterf,morhforservice');
readln(service);
writeln('Entertheamountinkillograms');
readln(amount);
caseserviceof
'f':
④;
'm':
⑤;
'h':
⑥;
end;
writeln('thecostforgasolineis',cost:
10:
2)
end.
2.哥德巴赫1+1猜想(Goldbach’sConjecture)(每空3分)
【问题描述】
1742年6月7日哥德巴赫写信给大数学家欧拉,提出一个猜想:
每一个大于或等于6的偶数都可表示为两个素数的和。
例如:
6=3+38=3+510=3+7……。
同年6月30日欧拉回信表示他虽不能证明此猜想,但他相信这是完全正确的。
这就是著名的哥德巴赫“1+1”猜想(Goldbach’sConjecture)。
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+38=3+510=3+712=5+714=3+11
16=3+1318=5+1320=3+1722=3+1924=5+19
26=3+2328=5+2330=3+2732=3+2934=3+31
…………………………
【程序】
var
i,j,k,n:
integer;
p,p1,p2:
boolean;
begin
i:
=①;n:
=0;
whilei<=100do
begin
j:
=3;
p:
=true;
while(i-j>=3)andpdo
begin
p1:
=true;
fork:
=2toj-1do
ifjmodk=0thenp1:
=②;
ifp1then
begin
p2:
=true;
fork:
=2toi-j-1do
if(i-j)modk=0thenp2:
=③;
if④then
begin
p:
=false;
n:
=n+1;
write(i:
2,'=',j:
2,'+',i-j:
2,'':
4);
if⑤=0thenwriteln
end
elsej:
=j+2
end
elsej:
=j+2
end;
i:
=⑥
end;
end.
义乌市2008年青少年信息学竞赛答题卷(初中)
一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题1.5分,共30分)
题号
1
2
3
4
5
6
7
8
9
10
答案
题号
11
12
13
14
15
16
17
18
19
20
答案
二、问题求解(每题5分,共10分)
1、
2、
三、阅读程序写结果(共4题,每题8分,共计32分)
1、
2、
3、
4
四、程序填空(共28分)
第1题(每空2分)
①
②
③
④
⑤
⑥
第2题(每空3分)
①
②
③
④
⑤
⑥