NOIP第二十届全国青少年信息学奥林匹克联赛初赛试题及答案提高组试题及答案PASCAL.docx
《NOIP第二十届全国青少年信息学奥林匹克联赛初赛试题及答案提高组试题及答案PASCAL.docx》由会员分享,可在线阅读,更多相关《NOIP第二十届全国青少年信息学奥林匹克联赛初赛试题及答案提高组试题及答案PASCAL.docx(12页珍藏版)》请在冰豆网上搜索。
NOIP第二十届全国青少年信息学奥林匹克联赛初赛试题及答案提高组试题及答案PASCAL
第二十届全国青少年信息学奥林匹克联赛初赛
提高组Pascal语言试题
竞赛时间:
2014年10月12日14:
30~16:
30
选手注意:
●试题纸共有10页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)
1.以下哪个是面向对象的高级语言( )。
A.汇编语言B.C++C.FORTRAND.Basic
2.1TB代表的字节数量是( )。
A.2的10次方B.2的20次方C.2的30次方D.2的40次方
3.二进制数00100100和00010101的和是( )。
A.00101000B.001010100C.01000101D.00111001
4.TCP协议属于哪一层协议( )。
A.应用层B.传输层C.网络层D.数据链路层
5.下列几个32位IP地址中,书写错误的是( ).
A.162.105.130.27B.192.168.0.1C.256.256.129.1D.10.0.0.1
6.在无向图中,所有顶点的度数之和是边数的( )倍。
A.0.5B.1C.2D.4
7.对长度为n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为( )。
A.n/2B.(n+1)/2C.(n-1)/2D.n/4
8.编译器的主要功能是( )。
A.将一种高级语言翻译成另一种高级语言
B.将源程序翻译成指令
C.将低级语言翻译成高级语言
D.将源程序重新组合
9.二进制数111.101所对应的十进制数是( )。
A.5.625B.5.5C6.125D.7.625
10.若有变量vara:
integer;x,y:
real;,且a:
=7,x:
=2.5,y:
=4.7,则表达式x+amod3*trunc(x+y)mod2div4的值大约是( )。
A.2.500000B.2.750000C.3.500000D.0.000000
11.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。
type
ptr=^node;
node=record
data:
integer;
next:
ptr;
end;
var
p,q,r:
ptr;
现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下程序段中错误的是( )。
A.q^.next:
=r^.next;p^.next:
=r;r^.next:
=q;
B.p^.next:
=r;q^.next:
=r^.next;r^.next:
=q;
C.q^.next:
=r^.next;r^.next:
=q;p^.next:
=r;
D.r^.next:
=q;q^.next:
=r^.next;p^.next:
=r;
12.同时查找2n个数中的最大值和最小值,最少比较次数为( )。
A.3(n-2)/2B.4n-2C.3n-2D.2n-2
13.设G是有6个结点的完全图要得到一棵生成树,需要从G中删去( )条边。
A.6B.9C.10D.15
14.以下时间复杂度不是O(n2)的排序方法是( )。
A.插入排序B.归并排序C.冒泡排序D.选择排序
15.以下程序段实现了找第二小元素的算法。
输入是n个不等的数构成的数组S,输出S中第二小的数SecondMin。
在最坏情况下,该算法需要做( )次比较。
ifS[1]
begin
FirstMin:
=S[1];
SecondMin:
=S[2];
end
else
begin
FirstMin:
=S[2];
SecondMin:
=S[1];
end;
fori:
=3tondO
ifS[i]ifS[i]begin
SecondMin:
=FirstMin;
FirstMin:
=S[i];
end
else
SecondMin:
=S[i];
A.2nB.n-1C.2n-3D.2n-2
二、不定项选择题(共5题,每题1.5分,共计7.5分;每题有一个或多个正确选项,多选或少选均不得分)
1.若逻辑变量A、C为真,B、D为假,以下逻辑运算表达式为真的有( )。
A.(B∨C∨D)∨D∧AB.((┐A∧B)∨C)∧┐B
C.(A∧B)∨(C∧D)∨┐A)D.A∧(D∨┐C)∧B
2.下列( )软件属于操作系统软件。
A.MicrosoftWord
B.WindowsXP
C.Android
D.MacOSX
E.Oracle
3.在NOI比赛中,对于程序设计题,选手提交的答案不得包含下列哪些内容( )。
A.试图访问网络
B.打开或创建题目规定的输入/输出文件之外的其他文件
C.运行其他程序
D.改变文件系统的访问权限
E.读写文件系统的管理信息
4.以下哪些结构可以用来存储图( )。
A.邻接矩阵B.栈C.邻接表D.二叉树
5.下列各无符号十进制整数中,能用八位二进制表示的数有( )。
A.296B.133C.256D.199
三、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)
1.由数字1,1,2,4,8,8所组成的不同的四位数的个数是________。
2.如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是________。
四、阅读程序写结果(共4题,每题8分,共计32分)
1.var
a,b,i,tot,c1,c2:
integer;
begin
readln(a,b);
tot:
=0;
fori:
=atobdo
begin
c1:
=idiv10;
c2:
=imod10;
if(c1+c2)mod3=0then
inc(tot);
end;
writeln(tot);
end.
输入:
731
输出:
________
2.var
n,m:
integer;
functionfun(n,minNum,maxNum:
integer):
integer;
vartot,i:
integer;
begin
ifn=0then
exit
(1);
tot:
=0;
fori:
=minNumtomaxNumdo
tot:
=tot+fun(n-1,i+1,maxNum);
exit(tot);
end;
begin
readln(n,m);
writeln(fun(m,1,n));
end.
输入:
63
输出:
________
3.const
SIZE=100;
var
dict:
array[1..SIZE]ofstring;
rank,ind:
array[1..SIZE]ofinteger;
i,j,n,tmp:
integer;
begin
readln(n);
fori:
=1tondo
begin
rank[i]:
=i;
ind[i]:
=i;
readln(dict[i]);
end;
fori:
=1ton-1do
forj:
=1ton-ido
ifdict[ind[j]]>dict[ind[j+1]]then
begin
tmp:
=ind[j];
ind[j]:
=ind[j+1];
ind[j+1]:
=tmp;
end;
fori:
=1tondo
rank[ind[i]]:
=i;
fori:
=1tondo
write(rank[i],'');
writeln;
end.
输入:
7
aaa
aba
bbb
aaa
aaa
ccc
aa
输出:
________
4.const
SIZE=100;
var
alive:
array[1..SIZE]ofinteger;
n,m,num,i,j:
integer;
functionnext(num:
integer):
integer;
begin
repeat
inc(num);
ifnum>nthen
num:
=1;
untilalive[num]<>0;
exit(num);
end;
begin
read(n,m);
fori:
=1tondo
alive[i]:
=1;
num:
=1;
fori:
=1tondo
begin
forj:
=1tom-1do
num:
=next(num);
write(num,'');
alive[num]:
=0;
ifinum:
=next(num);
end;
writeln;
end.
输入:
113
输出:
________
五、完善程序(每题14分,共计28分)
1.(双栈模拟数组)只使用两个栈结构stack1和stack2,模拟对数组的随机读取。
作为栈结构,stack1和stack2只能访问栈顶(最后一个有效元素)。
栈顶指针top1和top2均指向栈顶元素的下一个位置。
输入第一行包含两个整数,分别是数组长度n和访问次数m,中间用单个空格隔开。
第二行包含n个整数,依次给出数组各项(数组下标从0到n-1)。
第三行包含m个整数,需要访问的数组F标。
对于每次访问,输出对应的数组元素。
(前两空每空2.5分,其余每空3分,共14分)
const
SIZE=100;
var
stack1,stack2:
array[0..SIZE]ofinteger;
top1,top2:
integer;
n,m,i,j:
integer;
procedureclearStack();
var
i:
integer;
begin
fori:
=top1toSIZEdo
stack1[i]:
=0;
fori:
=top2toSIZEdo
stack2[i]:
=0;
end;
begin
read(n,m);
fori:
=0ton-1do
read(stack1[i]);
top1:
=________;
top2:
=________;
forj:
=0tom-1do
begin
read(i);
while(ibegin
dec(top1);
________;
inc(top2);
end;
while(i>top1—1)do
begin
dec(top2);
________;
inc(top1);
end;
clearStack();
writeln(stack1[________]);
end;
end.
2.(最大子矩阵和)给出m行n列的整数矩阵,求最大的子矩阵和(子矩阵不能为空)。
输入第一行包含两个整数m和n,即矩阵的行数和列数。
之后m行,每行n个整数,描述整个矩阵。
程序最终输出最大的子矩阵和。
(第一空2分,其余3分,共14分)
const
SIZE=100;
var
matrix:
array[1..SIZE,1..SIZE]ofinteger;
rowsum:
array[1..SIZE,0..SIZE]ofinteger;
//rowsum[I,j]记录前i行前j个数的和
m,n,i,j,first,last,area,ans:
integer;
begin
read(m,n);
fori:
=1tomdo
forj:
=1tondo
read(matrix[i,j]);
ans:
=matrix________;
fori:
=1tomdo
________;
fori:
=1tomdo
forj:
=1tondo
rowsum[i,j]:
=________;
forfirst:
=1tondo
forlast:
=firsttondo
begin
________;
fori:
=1tomdo
begin
area:
=area+________;
if(area>ans)then
ans:
=area;
if(area<0)then
area:
=0;
end;
end;
writeln(ans);
end.
第二十届全国青少年信息学奥林匹克联赛初赛
提高组参考答案
一、单项选择题(共15题,每题1.5分,共计22.5分)
1
2
3
4
5
6
7
8
B
D
D
B
C
C
B
B
9
10
11
12
13
14
15
D
A
D
C
C
B
C
二、不定项选择题(共5题,每题1.5分,共计7.5分,多选或少选均不得分)
1
2
3
4
5
AB
BCD
ABCDE
AC
BD
三、问题求解(共2题,每题5分,共计10分)
1.1022.15
四、阅读程序写结果(共4题,每题8分,共计32分)
1.82.20
3.25634714.3691510411827
五、完善程序(第1题第2空3分,其余每空2.5分,共计28分)以下各程序填空可能还有一些等价的写法,各省赛区可请本省专家审定和上机验证,可以不上报CCFNOI科学委员会检查。
1
①
n
②
0
③
stack2[top2]:
=stack2[top1]
④
stack2[top1]:
=stack2[top2]
⑤
top1-1
2
①
[1,1]
②
rowsum[i,0]:
=0
③
rowsum[i,j-1]+matrix[i,j]
④
area:
=0
⑤
rowsum[i,last]-rowsum[i,first-1]