衢州市青少年信息学竞赛选拔赛试题.docx

上传人:b****5 文档编号:6137411 上传时间:2023-01-04 格式:DOCX 页数:13 大小:122.35KB
下载 相关 举报
衢州市青少年信息学竞赛选拔赛试题.docx_第1页
第1页 / 共13页
衢州市青少年信息学竞赛选拔赛试题.docx_第2页
第2页 / 共13页
衢州市青少年信息学竞赛选拔赛试题.docx_第3页
第3页 / 共13页
衢州市青少年信息学竞赛选拔赛试题.docx_第4页
第4页 / 共13页
衢州市青少年信息学竞赛选拔赛试题.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

衢州市青少年信息学竞赛选拔赛试题.docx

《衢州市青少年信息学竞赛选拔赛试题.docx》由会员分享,可在线阅读,更多相关《衢州市青少年信息学竞赛选拔赛试题.docx(13页珍藏版)》请在冰豆网上搜索。

衢州市青少年信息学竞赛选拔赛试题.docx

衢州市青少年信息学竞赛选拔赛试题

 

衢州市青少年信息学竞赛选拔赛试题

2007年衢州市青少年信息学竞赛选拔赛试题

一、选择题(下列每小题只有一个正确答案,多选不选均不给分,每小题3分,共30分)

1.不同类型的存储器组成了多层次结构的存储器体系,按存取速度从快到慢的排列是

 (A)寄存/辅存/主存(B)外存/主存/辅存

 (C)寄存/主存/辅存(D)主存/寄存/外存

2.李老师要把一篇论文用电子邮件的方式寄给杂志社,可是李老师只有该论文的打印稿,为了最快地从论文的打印稿得到电子稿,可以采用的输入设备是()

(A)键盘

(B)MOUSE

(C)扫描仪

(D)手写板

3.下列无符号数中,最小的数是

(A)(37)8(B)(75)10(C)()2(D)(2A)16

4.在机关工作的小王想学习网页制作技术,你向他推荐的软件是()

(A)Word

(B)Excel

(C)FrontPage

(D)Photoshop

5.小赵用下列方法制作的一张图片,可能是矢量图的是()

(A)数码相机拍摄了一张图

(B)扫描仪器扫描一张图

(C)在Flash软件中画了一张图

(D)在Photoshop中画了一张图

6.高度为n的均衡的二叉树是指:

如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。

在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为()

(A)10(B)11(C)12(D)13

7.已知6个结点的二叉树的先根遍历是123456(数字为结点的编号,以下同),后根遍历是325641,则该二叉树的可能的中根遍历是()

(A)321465(B)321546

(C)213546(D)231465

8.已知数组A中,每个元素A[I,J]在存贮时要占3个字节,设I从1变化到8,J从1变化到10,分配内存时是从地址SA开始连续按行存贮分配的。

试问:

A[5,8]的起始地址为

 (A)SA+141(B)SA+180(C)SA+222(D)SA+225

9.在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是

(A)希尔排序(B)起泡排序(C)插入排序(D)选择排序

10.下列叙述中,正确的是

 (A)线性表的线性存贮结构优于链表存贮结构

 (B)队列的操作方式是先进后出

 (C)栈的操作方式是先进先出

 (D)二维数组是指它的每个数据元素为一个线性表的线性表

二、算法分析与公式推导(每小题5分,本题满分10分)

1.选择排序的算法是:

首先找出关键字值最小的记录,然后把这个记录与第一个位置上的记录对换。

这样,就使关键字值最小的记录取得了应占的位置。

接着,再在余下的记录中找关键字值最小的记录,并把它与第二个位置上的记录对换,使关键字值第二小的记录取得了应占的位置。

依次类推,一直到所有的记录都处在它应占的位置上,便得到了按关键字值非减次序排序的有序文件。

如果有n个数据,按上述方法排序,总的比较次数为。

2.已知一个由n个元素构成的集合,求由该集合的所有子集合作元素构成的集合(幂集)。

例如n=3,可得集合A=[1,2,3],A的幂集为B=[⊙,[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]]共8个元素。

则n个元素的集合的幂集元素个数为:

三、程序填空(初中学生做1,2,3,4,5;高中学生做1,2,3,6,7,每空3分,本题满分60分)

1.用递归计算m与n的最大公约数。

程序:

Programgmn(input,output);

Var

n,n,g:

integer;

Functionmaxg(m,n:

integer):

integer;

Ifn=0

Thenmaxg:

=m

Elsemaxg:

=

(1)

End;

Begin

read(m,n);

g:

=

(2);

Writeln(‘m=’,m,’n=’,n,’maxg=’,g)

End.

2.(全排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数的全部可能的排列(不一定按升序输出)。

例如,输入3,则应该输出(每行输出5个排列):

123132213231321

312

程序:

Programex401;

Var

i,n,k:

integer;

a:

array[1..10]ofinteger;

count:

longint;{变量count记录不同排列的个数,这里用于控制换行}

Procedureperm(k:

integer);

varj,p,t:

integer;

begin

if(3)then

begin

inc(count);

forp:

=1tokdo

write(a[p]:

1);

write('');

if(4)thenwriteln;

exit;

end;

forj:

=ktondo

begin

t:

=a[k];a[k]:

=a[j];a[j]:

=t;

(5);

t:

=a[k];(6);

end

end;

begin

writeln('Entryn:

');

read(n);

count:

=0;

fori:

=1tondoa[i]:

=i;

(7);

end.

3.中国象棋棋盘如下图。

马自左下角A跳到右上角B。

今规定马只走日字,且只允许往右跳,不许往左跳。

如图所示,为一种跳行路线。

找出一条从A到B的路径。

B

A

程序清单:

programex(input,output);

varx,y,m,k,i:

integer;

b:

array[0..8]ofinteger;

dx,dy:

array[1..4]ofinteger;

begin

x:

=0;y:

=0;

m:

=0;k:

=0;

dx[1]:

=1;dy[1]:

=-2;

dx[2]:

=2;dy[2]:

=-1;

dx[3]:

=2;dy[3]:

=1;

dx[4]:

=1;dy[4]:

=2;

fori:

=0to8do

b[i]:

=0;

while(x<>8)or(<>4)do

begin

k:

=k+1;

ifk>4then

begin

k:

=b[m];

m:

=m-1;

(8);

y:

=y-dy[k]

end;

else

begin

x:

=x+dx[k];

(9);

if(x>8)or(y<0)or(y>4)then

begin

x:

=x-dx[k];

y:

=y-dy[k]

end;

else

begin

m:

=m+1;

(10);

(11)

end

end

end;

fori:

=1tomdo

write(b[i]:

3);

writeln

end.

4.快速排序

快速排序的基本思想是:

元素的比较和交换是从两端向中间进行的,关键字大的元素一次就能够交换到后面的单元,关键字小的元素一次就能够交换到前面的单元,然后将数组元素分成两个单元,对每一个单元也采用相同的方法,直到每一单元只有一个元素为止。

程序清单:

constmax=30;

type

node=record

key:

integer;

data:

integer;

end;

sarray=array[0..max]ofnode;

varn,i:

integer;

p:

sarray;

procedurequicksort(vara:

sarray;s,t:

integer);

vari,j:

integer;x:

node;

begin

i:

=s;j:

=t;x:

=a[s];

while(12)do

begin

while(a[j].key>=and(j>i)do(13);

ifj>ithen

begin

(14);i:

=i+1;

end;

while(a[j].key>=and(i

=i+1;

ifi

begin

a[j]:

=a[i];j:

=j-1;

end;

(15)

end;

ifs

ifi+1

end;

begin

read(n);

fori:

=1tondoread(p[i].key);

quicksort(p,1,n);

fori:

=1tondowrite(p[i].key,'');

writeln;

end.

5.平面直线交点问题

在平面上有n条直线,且无三线共点,问这些直线能有多少种不同的交点数。

例:

n(直线数)p(交点数)

10

20,1

30,2,3

……

程序清单:

programa5;

constmax=200;

varn,k,i,total:

integer;

a:

array[0..max]ofboolean;

proceduretry(m,j:

integer);

varp:

integer;

begin

ifm>0thenforp:

=mdownto1dotry(m-p,j+p*(m-p))

elsea[j]:

=true;

end;

begin

repeat

writeln('n=',n);

readln(n);

(16);

until(17);

fori:

=0tokdo(18);

try(n,0);

(19);

fori:

=0tokdo

if(20)thenbegin

inc(total);

writeln('[',total,']',i);

end;

end.

6.背包问题

设有n种物品,每种物品有一个重量及一个价值,但每种物品的数量是无限的,同时有一个背包,最大载重量为Xk。

现从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于Xk,而价值的和为最大。

程序清单:

programpackage;

const

maxxk=400;

maxn=20;

fname='';

type

tlist=array[1..maxn]ofbyte;

tmake=array[0..maxn,0..maxxk]ofinteger;

var

n,xk:

integer;

w,u:

tlist;

f:

tmake;

procedureinit;

varf:

text;i:

byte;

begin

fillchar(w,sizeof(w),0);

fillchar(u,sizeof(u),0);

assign(f,fname);

reset(f);

readln(f,n,xk);

fori:

=1tondoread(f,w[i]);

fori:

=1tondoread(f,u[i]);

close(f);

end;

proceduremake;

vari,j:

byte;

begin

fillchar(f,sizeof(f),0);

fori:

=1tondo

begin

forj:

=1tow[i]-1dof[i,j]:

=f[i-1,j];

forj:

=w[i]to(21)do

iff[i-1,j]>f[i,j-w[i]]+u[i]thenf[i,j]:

=f[i-1,j]

elsef[i,j]:

=(22);

end;

end;

procedureprint;

varget:

tlist;

i,j:

byte;

begin

fillchar(get,sizeof(get),0);

i:

=n;(23);

whilei>0do

iff[i,j]=f[i-1,j]

thendec(i)

else

begin

dec(j,w[i]);

inc(get[i]);

end;

writeln('n=',n,'xk=',xk);

writeln('maxworth=',f[n,xk]);

fori:

=1tondo

writeln('No.',i,'Get',get[i]);

end;

begin

init;

(24);

print;

end.

7.拓扑排序

中学生要参加信息学奥林匹克竞赛,要学习几门功课,但功课之间的先行与后学的关系如下:

代号课程名称先行课程

C1英语基础无

C2数学基础无

C3离散数学C2

C4计算机基础知识C1,C2

C5程序设计基础C1,C2

C6Pascal语言程序设计C1,C2,C4,C5

C7数据结构C2,C6

C8算法设计C2,C6,C7

C9人工智能C2,C5,C8

C10运筹学C2,C8

设计程序,排列出学习各门功课的先后次序。

程序清单:

constmax=20;

typelink=^node;

node=record

vex:

0..max;

next:

link;

end;

adjelist=array[1..max]ofnode;

varr:

adjelist;t,i:

integer;

p,s:

link;

proceduretoporder(varal:

adjelist;n:

integer);

vari,j,k,top:

integer;

q:

link;

begin

top:

=0;

fori:

=1tondo

ifal[i].vex=0then

begin

al[i].vex:

=top;

top:

=i;

end;

i:

=0;

while(25)do

begin

j:

=top;

top:

=al[top].vex;

write('---V',j:

2);

i:

=i+1;

(26);

whileq<>nildo

begin

(27);

al[k].vex:

=al[k].vex-1;

ifal[k].vex=0then

begin

(28);

top:

=k;

end;

(29);

end;

writeln;

end;

ifi

thisnetwork,hasacycle!

')

elsewriteln('Yes!

');

end;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1