ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:28.73KB ,
资源ID:7065573      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7065573.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(noip初赛解析.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

noip初赛解析.docx

1、noip初赛解析分区联赛(NOIP2010)初赛模拟试卷(PASCAL 2个小时 满分100分)一、 单项选择题(每题5个选项中只有一个正确答案,1.5分/题*10题=15分)1. 以下各项中,( D )不是CPU的组成部分。 A. 控制器 B. 运算器 C. 寄存器 D. 主板 E. 算术逻辑单元(ALU) 2在关系数据库中,存放在数据库中的数据的逻辑结构以( E )为主。 A. 二叉树 B. 多叉树 C.哈希表 D. B+树 E.二维表 HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值. 也可以说,hash就是找到一种数据内容和数据

2、存放地址之间的映射关系基本概念* 若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。* 对不同的关键字可能得到同一散列地址,即key1key2,而f(key1)=f(key2),这种现象称冲突。具有相同函数值的关键字对该散列函数来说称做同义词。综上所述,根据散列函数H(key)和处理冲突的方法将一组关键字映象到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象” 作为记录在表中的存储位置,这种表便称为散列表,这一映象过程称为散列造表或散列,所得的存储

3、位置称散列地址。* 若对于关键字集合中的任一个关键字,经散列函数映象到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数(Uniform Hash function),这就是使关键字经过散列函数得到一个“随机的地址”,从而减少冲突。B树,其定义如下:一棵m阶的B-树满足下列条件: 树中每个结点至多有m个孩子; 除根结点和叶子结点外,其它每个结点至少有m/2个孩子; 若根结点不是叶子结点,则至少有2个孩子; 所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息; 有k个孩子的非终端结点恰好包含有k-1个关键字。B+树可以看作是B树的变形,对于存放在外存贮器上的字典,B+树比

4、B树更为常用。一个m阶的B+树满足下列条件(1) 每个结点至多有m棵子树。(2) 除根结点外,其它每个分支至少有m/2棵子树。(3) 非叶结点的根结点至少有两棵子树。(4) 有n棵子树的结点有n个关键码,叶结点中至少包含n/2个关键码。(5) 叶结点都在同一层中,其中存放数据文件中记录的关键码及指向该记录的指针,或存放数据文件分块后每块的最大关键码及指向该块的指针。叶结点按关键码值大小顺序链接。可以把每个叶结点看成是一个基本索引块(直接指向数据文件中的记录)。(6) 所有分支结点可看成是索引的索引。使结点中仅包含它的各个子结点中最大(或最小)关键码的分界值及指向子结点的指针。 3在下列各项中,

5、只有( D )不是计算机存储容量的常用单位。 A. Byte B. KB C.MB D.UB E.TB4在Pascal语言中,表达式(23 or 2 xor 5)的值是( A )。 A. 18 B. 1 C.23 D.32 E.24 Xor 异或10111 or 10=1011110111 xor 101=100105在Pascal语言中,判断整数a等于0或b等于0或c等于0的正确的条件表达式是( B )。A. not(a0)or(b0)or(c0) B. not(a0)and(b0)and(c0)C. not(a=0)and(b=0)or(c0) D. (a=0)and(b=0)and(c=

6、0) E. not(a=0)or(b=0)or(c=0) 20076地面上有标号为A、B、C的3根细柱,在A柱上放有10个直径相同中间有孔的圆盘,从上到下依次编号为1,2,3,将A柱上的部分盘子经过B柱移入C柱,也可以在B柱上暂存。如果B柱上的操作记录为:“进,进,出,进,进,出,出,进,进,出,进,出,出”。那么,在C柱上,从下到上的盘子的编号为( D )。A. 2 4 3 6 5 7 B. 2 4 1 2 5 7 C. 2 4 3 1 7 6 D. 2 4 3 6 7 5 E. 2 1 4 3 7 520077用递归算法实现 n 个相异元素构成的有序序列的二分查找,采用一个递归工作栈时,该

7、栈的最小容量应(以下x表示取整操作)为( D )。A. n B. n/2 C. Log2n D. Log2(n+1) E. n/2+1二分查找又称折半查找算法思想:首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。8对于以下一组关键字(12,2,16,30,8,28,4,10,20,6,18),按照快速排序算法(选第一个记录为基准元素)进行递增排序,第一趟排序后得到的结果为( B )。A. 10,6,18,8,4,2,12,20,16,30,

8、28 B. 6,2,10,4,8,12,28,30,20,16,18C. 2,4,6,8,10,12,16,18,20,28,30 D. 6,10,8,28,20,18,2,4,12,30,16E. 6,10,8,20,28,18,2,4,12,30,1612的左小于,右大于。9假设一棵二叉树的后序遍历序列为DGJHEBIFCA,中序遍历序列为DBGEHJACIF,则其前序遍历序列为( B )。A. ABCDEFGHIJ B. ABDEGHJCFI C. ABDEGHJFIC D. ABDEGJHCFI E. ABDEGHIJCF后序遍历序列最后A为根结点中序遍历序列中DBGEHJ为A的左结点

9、,CIF为A的右结点DGJHEB后序遍历序列最后B。10已知一个线性表(38,25,74,63,52,48),采用的散列函数为H(Key)=Key mod 7,将元素散列到表长为7的哈希表中存储,若利用拉链法解决冲突,则在该散列表上进行等概率成功查找的平均查找长度为( C )。A. 1.0 B. 7/6 C. 4/3 D. 3/2 E. 5/4拉链法拉链法解决冲突的方法拉链法解决冲突的做法是:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数组t0.m-1。凡是散列地址为i的结点,均插入到以t为头指针的单链表中。t中各分量的初

10、值均应为空指针。38 5225 7463481+2+1+2+1+1=8/6=4/3二、 不定项选择题(每题至少有一个正确答案,少选漏选多选均不得分,1.5分/题*10题=15分)11欧拉图G是指可以构成一个闭回路的图,且图G 的每一条边恰好在这个闭回路上出现一次(即一笔画成)。在以下各个描述中,不一定是欧拉图的是( D )。A. 图G中没有度为奇数的顶点B. 包含欧拉环游的图(欧拉环游是指通过图中每边恰好一次的闭路径)C. 包含欧拉闭迹的图(欧拉迹是指通过图中每边恰好一次的路径)D. 存在一条回路,通过每个顶点恰好一次12. 设A=B=D=true,C=E=false,以下逻辑运算表达式值为真

11、的有( ABC )。A. ( AB)(CD)E B. (AB)C)DE)C. A(BCDE) D. (A(BC) DE 200713. (2010)16 + (32)8的结果等于( AB )。 A. (8234)10 B. (202A)16 C. (100000000110)2 D. (2042)1614. 下列各数据库系统软件中,以关系型数据库为主体结构的有哪些( ABCD )。 A. ACCESS B. SQL Server C. Oracle D. Foxpro15. 一个无法靠自身的控制终止的循环称为“死循环”。例如,在Pascal语言程序中,语句“while 1=1 do write

12、(“*”);” 就是一个死循环, 运行时它将无休止地打印*号。下面关于死循环的说法中, 哪些是正确的( A )。 A. 不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环,因而,任何编译系统都不做死循环检验 B有些编译系统可以检测出死循环 C. 死循环属于语法错误,既然编译系统能检查各种语法错误,当然也应该能检查出死循环 D. 死循环与多进程中出现的“死锁”差不多,而死锁是可以检测的,因而死循环也是可以检测的200716. 下列关于计算机算法的说法中,正确的有( BD )。 A. 一个正确的算法至少要有一个输入B. 算法的改进,在很大程度上推动了计算机科学与技术的进步C

13、. 判断一个算法的好坏,主要依据它在某台计算机上具体实现时的运行时间D. 目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效算法17. 面向对象程序设计是一种程序设计的方法论,它将对象作为程序的基本单元,将数据和程序封装在对象中,以提高软件的重用性、灵活性和扩展性。关于面向对象程序设计的说法中,正确的有( BCD )。A. 面向对象程序设计通常采用自顶向下设计方法进行设计。B. 面向对象程序设计方法具有继承性、封装性、多态性等几大特点。C. 支持面向对象特性的语言称为面向对象的编程语言,目前较为流行的有C+、JAVA、C#等。D. 面向对象程序设计的雏形来自Simul

14、a语言,后来在SmallTalk语言的完善和标准化过程中得到更多的扩展和对以前思想的重新注解。至今,SmallTalk语言仍然被视为面向对象语言的基础。18. 设T是一棵有n个结点的树,下列说法正确的有( ABC )。A. T是连通的、无环的 B. T是连通的,有n-1条边C. T是无环的,有n-1条边 D. 以上都不对19. 有关防火墙(firewall)的说法,正确的有( ABCD )。A. 防火墙是一项协助确保信息安全的设备,其会依照特定的规则,允许或是限制数据通过B. 防火墙可能是一台专属的硬件或是安装在一般硬件上的一套软件C. 网络层防火墙可以视为一种 IP 数据包过滤器,只允许符合

15、特定规则的数据包通过,其余的一概禁止穿越防火墙D. 应用层防火墙是在 TCP/IP的“应用层”上工作,可以拦截进出某应用程序的所有数据包20Web2.0是近年来互联网的热门概念之一,其核心思想是互动与分享。下列网站中哪些是典型的Web2.0应用( B )。A. Sina B. Flick C. Yahoo D. Google三、问题求解(4分/ 题 * 3题 = 12分,每题答案完全正确得4分,否则0分)1、有3堆火柴共48根,现在从第1堆里拿出与第2堆根数相同的火柴并入第2堆,再从第2堆里拿出与第3堆根数相同的火柴并入第3堆,最后再从第3堆里拿出与此时第1堆根数相同的火柴并入第1堆,经过这样

16、的变动后3堆火柴的根数正好一样。问:原来每堆火柴各有多少根?第1、2、3堆分别有22、14、12根。X Y Z1 X-Y 2Y 2 X-Y 2Y-Z 2Z3 2(X-Y) 2Z-(X-Y) 2(X-Y)= 2Y-Z=2Z-(X-Y) X+Y+Z=48 2、一棵二叉树的先序、中序和后序遍历顺序的一部分如下所示,请画出该二叉树。先序: _B_F_ICEH_G中序: D_KFIA_EJC_后序:_K_FBHJ_G_A 3、对下面的递归算法要求写出调用p(4)的运行结果。procedure p(w:integer); begin if w0 then begin write(w); p(w-1); p

17、(w-1); end end;432112113211211四、读程序写结果(7分/ 题 * 4题 = 28分,每题结果完全正确得7分,否则0分)1、program t1;const n=10; a:array 1.n of longint=(8,19,24,33,46,54,67,76,81,92);var i,j,s:longint;begin s:=0; for i:=1 to n do for j:=i to n do s:=s+ai*aj; writeln(s);end.输出:1412062、program t2;var i,j,k,n,s:longint;begin n:=16;s

18、:=0; for i:=1 to n div 2 do begin k:=1; for j:=i+1 to n do k:=k*j div (j-i); s:=s+k end; writeln(s)end.输出:392023、program t3;var n:longint;procedure t(n:longint);begin if n0 then begin t(n div (-8); write(n mod (-8):3) endend;begin n:=622; t(n); writeln; n:=-622; t(n); writelnend.输出:-1 1 -5 61 -1 5 -

19、64、program t4;const maxn=15;type arraytype=array 1.maxn*maxn,1.maxn*maxn of byte;var d,i,j,k,m,n,mind,nextp,t:longint; p:array 1.maxn*maxn,1.2 of longint; g:arraytype; r:array 1.maxn,1.maxn of longint; v:array 1.maxn*maxn of longint;procedure dfs(k:longint);var i:longint;begin if vk=0 then begin inc

20、(t); rpk,1,pk,2:=t; vk:=1; for i:=1 to n*n do if gk,i=1 then dfs(i) endend;begin n:=4;k:=0; for i:=1 to n do for j:=1 to n do begin inc(k);pk,1:=i;pk,2:=j end; fillchar(g,sizeof(g),0); for i:=1 to n*n-1 do for j:=i+1 to n*n do if abs(pi,1-pj,1)*(pi,2-pj,2)=2 then begin gi,j:=1; gj,i:=1 end; fillchar

21、(v,sizeof(v),0); t:=0; dfs(1); for i:=1 to n do begin for j:=1 to n do write(ri,j:4); writeln end;end.输出:1 4 7 10 8 11 2 5 3 6 9 1214 13 15 16五、完善程序(3分/ 空 * 10空 = 30分)1、最小的0、1数字串问题描述给定一个位数小于5的正整数N,编程求出最小正整数M,使NM的各位数字均为0或1。例如,当N=6时,M=185,NM=1110。问题输入 输入文件名为str.in,仅一行,包含一个正整数N。问题输出输出文件为str.out,也只有一行,共

22、有三个正整数,其中第一个数为N的值,第二个数为M的值,第3个数为MN 的值。每两个相邻数之间严格以一个空格作为分隔。输入样例6输出样例6 185 1110问题分析首先想到的是穷举二进制01串,但这样做肯定会超时,因为复杂度是2的幂次,幂次为要求的最小01串的位数,如果01串的位数较大,还要用精度运算来处理。正确的方法是根据二进制01串(作为十进制数运算)除以n的余数进行递推,因为如个两个位数相同的01串除以n的余数相同的话,则在它们的最高位之前再加个1之后,两个新的01串除以n的余数仍然相同,而题目要求能被n整除的取小的01串,显然当两个不同的01串除以n的余数相同时,只需记录值较小的那个01

23、串。以n=6为例,0,1除以6的余数乃为0,1,在0之前加1得到10,10除以6的余数为4,在1之前加1得到11,11除以6的余数为5,然后再在00,01,10,11之前加1得到三位0,1串100,101,110,111,100除以6的余数与10除以6的余数同为4,则无须记录,同样地101除以6的余数与11除以6的余数同为5也无须记录,110除以6的余数为2,111除以6的余数为3,断续下去可推得四位的0,1串1000,1001,1010,1011除以6的余数均已在前面出现过,只有1110能被6整除,余数为零为问题的解。在递推过程中对余数相同的01串只记录值最小的一个,所以象1100这样的01

24、串就不会被处理到,因为1100是在100之前加上1得到的,而100在之前因为除以6的余数与10除以6的余数相同,没有记录下来,这样做会不会影响问题的解呢?答案是肯定不会,因为在010之前加上1得到的1010与1100一定有同样的余数,所以记录了1010就不需要考虑1100了。因为余数不会超过n,程序中要记录的01串当然不会超过n个,所以该算法的复杂度=要求的最小01串的位数*n。再利用mod运算的下列两个性质: (a*b) mod n=(a mod n)*(b mod n),10k mod n=(.(10 mod n)*10) mod n)*10.) mod 10,高精度运算就可以避免了,实际

25、上由于每一个01串都是通过在另一个串的头上添加1得到,所以我们可以将这样的一对01串看作父子关系,可用类似宽度优先的方法记录父结点,再记录下当前的01串的位数就可以了。参考程序const maxn=10000;var i,k,n,len,r,tempf,templ,x:longint; firstz:boolean; long:array 0.maxn of integer; father:array0.maxn of integer;begin assign(input,str.in);reset(input); assign(output,str.out);rewrite(output);

26、 readln(n);close(input); if n=1 then begin writeln(1, ,1, ,1); close(output); halt end; fillchar(long,sizeof(long),0); fillchar(father,sizeof(father),0); long0:=0;long1:=1;father1:=0; r:=1;len:=1; while 1 long0=0 do begin r:=r*10 mod n; len:=len+1; for i:=0 to n-1 do if 2 (i=0) or (longi0) and (long

27、i=n then k:=k-n; if longk=0 then begin longk:=len; 3 fatherk:=I end end; end; write(n, ); k:=father0;tempf:=k;templ:=len;father0:=-1;long0:=0;r:=0;firstz:=true; while k=0 do begin r:=r*10+1; if r div n0 then begin write(r div n); firstz:=false end; if (r div n=0) and (not firstz) then write(0); r:=r

28、 mod n; for i:=len-1 downto 4 longk+1 do begin r:=r*10; if r div n0 then begin write(r div n); firstz:=false end; if (r div n=0) and (not firstz) then write(0); r:=r mod n; end; 5 len:=longk ; k:=fatherk; end; write( ); k:=tempf; len:=templ; father0:=-1; long0:=0; while k=0 do begin write(1); for i:

29、=len-1 downto longk+1 do write(0); len:=longk; k:=fatherk; end; writeln;close(output)end.2、排序问题描述 编写一个程序,对其从键盘输入N(1=N=9),输出一个包含Pascal过程 Procedure EasySort的文件EasySort.pas,使得EasySort具有对读入的N个整数(均在integer范围内)进行从小到大排序输出的功能。 EasySort中只能有if,readln,writeln语句。变量名应依次声明为a,b,c,;不能有冗余判断,例如,在判明ab,bc的情况下,a,c不得再作比较。输入样例3输出样例procedure EasySort;var a,b,c:integer;begin readln(a,b,c); if ab then if bc then writeln(a, ,b, ,c) else if ac then writeln(a, ,c, ,b)else writeln(c, ,a, ,b)else if ac then writeln(b, ,a, ,c) else if bc then writeln(b,

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

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