NOIP普及组试题精选Word文档格式.docx
- 文档编号:18849024
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:13
- 大小:27.74KB
NOIP普及组试题精选Word文档格式.docx
《NOIP普及组试题精选Word文档格式.docx》由会员分享,可在线阅读,更多相关《NOIP普及组试题精选Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
图灵奖-计算机界的诺贝尔奖,2000年姚期智获得“图灵奖”,也是迄今为止获得此项殊荣的唯一华裔计算机科学家。
二、网络和数据库
1.在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。
A.二叉树B.多叉树C.哈希表D.二维表
关系数据库是用二维表表示逻辑结构,类似于Excel。
2.LAN的含义是()。
A.因特网B.局域网C.广域网D.城域网
Internet(因特网)、LAN(局域网)、WAN(广域网)、MAN(城域网)
3.Web2.0是近年来互联网的热门概念之一,其核心思想是互动与分享。
下列网站中,()是典型的Web2.0应用。
A.SinaB.FlickerC.YahooD.Google
Web2.0最大的特点就是任何人可以参与、发布网页信息,如博客、播客(土豆、优酷等)、维基百科等。
4.常见的邮件传输服务器使用()协议接收邮件。
(NOIP2005)
A.HTTPB.SMTPC.TCPD.FTPE.POP3
【答案】E。
SMTP-发送邮件协议;
POP3-接收邮件协议;
HTTP-超文本传输协议;
FTP-文件传输协议;
TCP/IP-传输控制协议/因特网互联协议,它是Internet最基本的协议。
5.下列网络中常用的名字缩写对应的中文解释错误的是()。
(NOIP2004)
A、WWW(WorldWideWeb):
万维网
B、URL(UinformResourceLocator):
统一资源定位器
C、HTTP(HypertextTransferProtocol):
超文本传输协议
D、FTP(FileTransferProtocol):
快速传输协议
E、TCP(TransferControlProtocol):
传输控制协议
FTP:
文件传输协议。
URL:
统一资源定位器(网址)。
6.下列哪个不是数据库软件的名称()
A、MYSQL
B、SQLSever
C、Oracle
D、金山影霸
数据库软件常用的有:
MYSQL、SQLServer、Access、Foxpro、Oracle、Sybase等。
三、编程语言
1.一个无法靠自身的控制终止的循环成为“死循环”,例如,在C语言程序中,语句“while
(1)printf(“*”);
”就是一个死循环,运行时它将无休止地打印*号。
下面关于死循环的说法中,只有()是正确的。
A.不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环,因而,任何编译系统都不做死循环检查
B.有些编译系统可以检测出死循环
C.死循环属于语法错误,既然编译系统能检查各种语法错误,当然也应该能检查出死循环
D.死循环与多进程中出现的“死锁”差不多,而死锁是可以检测的,因而,死循环也可以检测的
【答案】A。
2.在Pascal语言中,表达式(23or2xor5)的值是()。
A.18B.1C.23D.32
本题考查进制转换和逻辑运算(and、or、not和xor)。
对于本题首先将十进制整数转换二进制数,然后再按位进行逻辑运算。
16
8
4
2
1
(=23)
(or)
(=2)
(xor)
(=5)
(=18)
7.(2070)16+(34)8的结果是()。
A.(8332)10B.(208A)16C.(100000000110)2D.(20212)8
本题两个数分别是十六进制和八进制,故先将它们转换为二进制,然后再进行计算和转换。
①(2070)16=(0010,0000,0111,0000)(每位展开为4位二进制数)
②(34)8=(11,100)2((每位展开为3位二进制数)
③利用二进制数的运算法则,得到两者相加为(0010,0000,0001)2=(8332)10
8.(2008)10+(5B)16的结果是()。
A.(833)16B.(2089)10C.(4163)8D.(100001100011)2
9.设A=B=True,C=D=False,下面逻辑运算表达式值为假的有()。
A.(﹁A∧B)∨(C∧D∨A)B.﹁(((A∧B)∨C)∧D)
C.A∧(B∨C∨D)∨DD.(A∧(D∨C))∧B
“﹁”表示not,“∧”表示and(与,并且),“∨”表示or(或者)。
10.在下列关于计算机语言的说法中,不正确的是()。
A.Pascal和C都是编译执行的高级语言
B.高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上
C.C++是历史上的第一个支持面向对象的计算机语言
D.与汇编语言相比,高级语言程序更容易阅读
第一个支持面向对象的计算机语言是Smalltalk。
四、数据结构
1.地面上有标号为A、B、C的三根柱,在A柱上放有10个直径相同中间有孔的圆盘,从上到下依次编号为1,2,3……,将A柱上的部分盘子经过B柱移入C柱,也可以在B柱上暂存。
如果B柱上的操作记录为“进、进、出、进、进、出、出、进、进、出、进、出、出”。
那么,在C柱上,从下到上的编号为()。
A.243657B.241257C.243176D.243675
栈,后进先出。
2.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。
已知某时刻该车站状态为空,从这一时刻开始的出入记录为:
“进,出,进,进,进,出,出,进,进,进,出,出”。
假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为()。
A.1,2,3,4,5B.1,2,4,5,7 C.1,4,3,7,6D.1,4,3,7,2
栈操作。
3.完全二叉树共有2*N-1个结点,则它的叶节点数是()。
A.N-1B.NC.2*ND.2N-1
在二叉树中,结点的度数有0、1、2三种情况,其中度为0的结点就是叶子结点。
设D0表示度为0的结点个数,D1表示度为1的结点个数,D2表示度为2的结点个数,则有二叉树结点=D0+D1+D2。
在完全二叉树中,若除去最下面一层的结点,则此时的二叉树构成一个满二叉树,其结点个数为(奇数),而题目中的二叉树共有2*N-1(奇数)个结点,所以可以知道完全二叉树最下面一层的结点个数为偶数个,得知D1=0。
这样我们只要求出D2,就可以得到D0的值了。
接下来,我们来看二叉树边的个数,由于“边数=结点数-1”(除去根结点,因为只有它的上面没有边),D0结点(叶节点)无发出的边,D1结点个数为0,D2发出的边数为D2*2,所以得到:
边数=结点数-1=D2*2 → 结点数=D2*2+1→
D2=(结点数-1)÷
2=(2*N-2)÷
2=N-1
∵D0+D2=2*N-1∴D0=2*N-1-(N-1)=N
4.完全二叉树的结点个数为11,则它的叶结点个数为()。
A.4 B.3 C.5 D.2 E.6
用上题的结论。
5.高度为n的均衡的二叉树是指:
如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。
在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为()。
A.10 B.11C.12D.13
满二叉树的结点个数为(根结点的深度为1),而这棵二叉树共有2381个结点,可以算出上面满二叉树的结点个数是=2048-1=2047,故这棵树有11+1(最下面1层)=12。
由于题目中根结点的深度是从0(一般从1)开始的,所以该树高12-1=11。
6.递归过程或函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。
A.队列B.多维数组C.线性表D.栈
7.设T是一棵有n个顶点的树,下列说法不正确的是()。
A.T有n条边B.T是连通的C.T是无环的D.T有n-1条边
n个顶点的树,除了根结点以外,其余每个结点上方都连接一条边,所以一共有n-1条边。
8.已知7个节点的二叉树的先根遍历是1245637(数字为节点的编号,以下同),中根遍历是4265173,则该二叉树的后根遍历是()。
A.4652731B.4652137C.4231547D.4653172
先根遍历=先序遍历(根→左→右),中根遍历=中序遍历(左→根→右),后根遍历=后序遍历(左→右→根)。
中序遍历保证了左子树的所有结点在它左边,右子树的结点在它右边。
过程如下:
后用先序遍历结果,找到父结点,然后按照中序遍历结果将其左右子树分开;
然后再从先序遍历结果中再找到左子树的根结点,再重复以上操作……直到所有结点归位。
先序:
1245637
中序:
4265173
①先序第1个数字是1(二叉树根),将中序中1的左半段与右半段分开,即得到1的左子树是4265,右子树是73,表示为(4265)1(73)。
图1
②再看1的左子树4265,其对应的先序2456,此时先序第1个数字是2(左子树的根),将中序以2再次划分为左子树4,右子树65,表示为(4)2(65),如图2所示。
图2
图3
图4
③2的右子树中序为65,先序为56,则2的右子树的根是5,再看中序,得到(6)5,到这里完成结点1左子树的结构,如图3所示。
④同样方法构建1右子树,得到(7)3,如图4所示。
⑤依照后序遍历的特点(左→右→根),得到结果:
4652731,故答案为A。
【思考】
(1)已知中序和后序,如何求先序?
(2)已知二叉树的先序、中序和后序序列分别如下,但其中有一些已模糊不清,试构造出该二叉树。
先序序列:
_BC_EF__
中序序列:
BDE_AG_H
后序序列:
_DC_GH_A
9.二叉树T,已知其先根遍历是1243576(数字为节点的编号,下同),中根遍历2415736,则该二叉树的后根遍历是()。
A.4257631B.4275631C.7425631D.4276531
10.已知6个结点的二叉树的先根遍历是123456(数字为结点的编号,以下同),后根遍历是325641,则该二叉树的可能的中根遍历是()。
A.321465B.321546 C.213546D.231465
先序遍历和后序遍历不能确定唯一中序遍历,对于本题的结果可以是:
231546或者321546。
11.二叉树T的宽度优先遍历序列为ABCDEFGHI,已知A是C的父结点,D是G的父结点,F是I的父结点,树中所有结点的最大深度为3(根结点深度设为0),可知F的父结点是()。
A.无法确定B.BC.CD.DE.E
12.设栈S的初始状态为空,元素a,b,c,d,e依次入栈,以下出栈序列不可能出现的有()。
A.a,b,c,e,dB.b,c,a,e,d C.a,e,c,b,dD.d,c,e,b,a
选项C中的出栈序列:
a,e,c,b,d,a,e出栈,则栈中必是b,c,d(从下往上),出栈序列只能是d,c,b,而不是c,b,d。
13.满二叉树的叶节点为N,则它的节点总数为()(NOIP2004)
A、N B、2N C、2N-1 D、2N+1 E、2^N-1
满二叉树的结点个数为(根结点的深度为1),其叶子节点的个数为,所以“结点个数”=“叶子节点”*2-1=2N-1。
五、算法
1.近20年来,许多计算机专家都大力推崇递归算法,认为它是解决较复杂问题的强有力的工具。
在下列关于递归算法的说法中,正确的是()。
A.在1977年前后形成标准的计算机高级语言“FORTRAN77”禁止在程序使用递归,原因之一是该方法可能会占用更多的内存空间
B.和非递归算法相比,解决同一个问题,递归算法一般运行得更快一些
C.对于较复杂的问题,用递归方式编程一般比非递归方式更难一些
D.对于已经定义好的标准数学函数sin(x),应用程序中的语句“y=sin(sin(x));
”就是一种递归调用。
2.在下列各种排序算法中,不是以“比较”作为主要操作的算法是()。
A.选择排序B.冒泡排序C.插入排序D.基数排序
基于“比较”的排序:
冒泡、选择、插入、快速、归并、堆、希尔等;
而“非比较”的排序:
计数排序、桶排序、基数排序等。
3.设字符串S="
Olympic"
,S的非空子串的数目是()。
A.28B.29C.16D.17
串长为1的子串有7个,串长为2的子串有6个,……,串长为7的子串有1个,共7+6+5+…2+1=28。
4.将数组{8,23,4,16,77,-5,53,100}中的元素按从小到大的顺序排列,每次可以交换任意两个元素,最少需要交换()次。
A.4B.5C.6D.7
选择排序,第1次是将第1个元素与右边7个元素中最小的一个交换,第2次是将第2个元素与右边6个元素中最小的一个交换,……。
若当前元素已是其余元素中最小的,则不需要交换。
5.对有序数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,成功查找元素19的查找长度(比较次数)是()。
A.1B.2C.3D.4
首先与中间元素56比较,比56小,则继续在56左侧的5个元素中查找;
与这5个元素的中间元素19比较,相等,则找到,所以只需要比较2次。
6.由3个a,1个b和2个c构成的所有字符串中,包含子串“abc”的共有()个。
A、20B、8C、16D、12E、24
把“abc”看成一个整体,记为d。
本题转换为2个a、1个c、1个d进行全排列,由于有2个a,所以要除以a的全排列个数,即。
六、问题求解
1.书架上有4本不同的书A、B、C、D。
其中A和B是红皮的,C和D是黑皮的。
把这4本书摆在书架上,满足所有黑皮的书都排在一起的摆法有_________种。
满足A必须比C靠左,所有红皮的书要摆在一起,所有黑皮的书要摆放在一起,共有_________种摆法。
【答案】12,4。
①由于要求黑皮的书排在一起,所以把C和D做为一个排列的对象,故3个对象的全排列为,而C和D可以互换位置,所以第一空的解为:
=12。
②红皮书要摆在一起,黑皮书要摆在一起,所以我们将A和B作为一个排列对象,C和D作为一个排列对象,另外A必须比C靠左,则必然是ABCD,由于A和B可以互换(=2),C和D可以互换(=2),所以摆法有2×
2=4种。
2.有6个城市,任何两个城市之间都有一条道路连接,6个城市两两之间的距离如下表所示,则城市1到城市6的最短距离为__________________。
城市1
城市2
城市3
城市4
城市5
城市6
3
12
15
5
6
7
9
【答案】7(1->
2->
5->
6)。
参考图的单源最短路径(Dijkstra算法)。
3.NOIP2007第1题:
子集划分
将n个数(1,2,…,n)划分成r个子集。
每个数都恰好属于一个子集,任何两个不同的子集没有共同的数,也没有空集。
将不同划分方法的总数记为S(n,r)。
例如,S(4,2)=7,这7种不同的划分方法依次为{
(1),(234)},{
(2),(134)},{(3),(124)},{(4),(123)},{(12),(34)},{(13),(24)},{(14),(23)}。
当n=6,r=3时,S(6,3)=______________。
(提示:
先固定一个数,对于其余的5个数考虑S(5,3)与S(5,2),再分这两种情况对原固定的数进行分析。
)
【答案】90。
①组合:
将6分成3个集合,只有3种分法:
①4个、1个、1个;
②3个、2个、1个;
③2个、2个、2个,所以利用组合数学知识,可以得到。
说明:
最后一种可能性是分成2个、2个、2个,从6个数取出2个的组合数为,再从余下的4个数中取出2个的组合数为,最后余下的2个数作为一个集合,但这种方法会出现重复的情况,如{(12),(34),(56)}、{(12),(56),(34)}、{(34),(12),(56)}、{(34),(56),(12)}、{(56),(12),(34)}、{(56),(34),(12)},即=6种。
②递推:
s(n,r)=s(n-1,r)*r+s(n-1,r-1),其中s(n,r)表示n个数分为r个集合的方法种数。
先可以固定一个数,如k,则接下来有两种方法:
一种是将余下的n-1个数分成r-1个集合,即数k独占一个集合;
另一种是将余下的n-1个数分成r个集合,再将前面固定的那个数,任意放在r个集合的任一个中,则方法有s(n-1,r-1)*r种。
利用加法原理,得到这个递推式。
由于它是二维的,所以我们可以用填表的方法来求解出答案,每个单元格中的数等于它左下方数+下方数×
r。
r=1
r=2
r=3
n=6
31
90
n=5
25
n=4
n=3
n=2
n=1
4.NOIP2007第2题
(最短路线)某城市的街道是一个很规整的矩形网络(见下图),有7条南北向的纵街,5条东西向的横街。
现要从西南角的A走到东北角的B,最短的走法共有多少种?
___________
B
A
【答案】210。
①递推:
设f(i,j)表示到达第i行(横街)、第j列(纵街)时的最短走法,故可以写出递推式:
f(i,j)=f(i,j-1)+f(i-1,j)。
f(i,j-1)
f(i,j)
f(i-1,j)
35
70
126
210
10
20
56
84
21
28
②组合:
无论怎么走法,每种走法最终均是由向上走4步,向右走6步组成,一共10步,所以全部走法是从10步里选出其中的4步向上走(其余6步向右走),即(种)。
5.(寻找假币)现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,最少需要称几次,就可以找出假币?
你还要指出第1次的称重方法。
请写出你的结果:
____________________________。
【答案】4,第一步:
分成3组:
27,27,26,将前2组放到天平上。
若第1组与第2组相等,则假币在第3组中;
若第1组比第2组轻,则假币在第1组中,否则就在第2组中。
以此类推,第2步:
999(27枚)或998(26枚);
第3步:
333(9枚)或332(8枚)
第4步:
111(3枚)或11(2枚)
6.(取石子游戏)现有5堆石子,石子数依次为3,5,7,19,50,甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取),取最后一颗石子的一方获胜。
甲先取,问甲有没有获胜策略
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NOIP 普及 试题 精选