2019-2020年初中组PASCAL语言信息学竞赛初赛模拟试题附参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2019-2020年初中组PASCAL语言信息学竞赛初赛模拟试题附
参考答案
一、选择题:(选出每题正确的一个答案代码,填在横线上,每题1.5分,共30分)
1、执行下列二进制算术加运算11001001+00100111()。

A. 11101111
B. 11110000
C. 00000001
D. 10100010
2、假设a1,a2,a3是布尔变量,且值均为True,则下列表达式中值为False的是______
A. NOT a1 AND NOT a2
B. a1 OR a2 AND a3
C. (NOT a1 OR a2)AND (a2 OR a3)
D. False OR a1 AND a2 OR NOT a3
3、若一个问题的求解既可以用递归算法,也可以用递推算法,则往往用_____算法。

A.先递归后递推
B. 先递推后递归
C.递归
D.递推
4、表达式8 MOD (2*(5-3*(4*(5 DIV 2))DIV 10))的值是_____
A. 0
B. 1
C. 2
D. 3
5、贪婪法是一种______的算法。

A.不求最优,只求满意
B.只求最优
C.求取全部可行解
D.求取全部最优解
6、称一种语言为低级程序语言是由于它_____。

A.离机器特性近
B.离自然语言近
C.编程难度低
D.通用性强
7、排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素作比较,将其放入已排序序列的正确位置上的方法,称为_____.
A. 归并排序
B. 二分法排序
C. 冒泡排序
D.插入排序
8、若进栈序列为3,5,7,9,进栈过程中可以出栈,则_____不可能是一个出栈序列。

A. 7,5,3,9
B. 9,7,5,3
C.7,5,9,3
D. 9,5,7,3
9、中缀表达式(a-b)*(cd)的后缀表达式是_____.
A. abcd*-
B. ab-cd
C. ab-*cd
D. a-bcd *
10、字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成多少个不同的字符串?_____
A. 5
B. 4
C. 6
D. 1
11、一个字长的二进制位数是_____
A.8
B.16
C.32
D.随计算机系统而不同的
12、当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为_____
if(a<b) then if(c<d) then x=1
else if(a<c) then
if(b<d) then x=2;
else x=3;
else x=6;
else x=7;
A. 1
B.2
C. 3
D. 6
13、若一个存储器的周期为200ns,且每个周期可访问4个字节,则该存储器带宽为____bit/s。

A.20M
B.40M
C.80M
D.160M
14、在WWW页面访问时,浏览器通过网络与该IP地址处的WEB服务器的_____服务端口间建立一条TCP连接。

A. HTML
B. HTTP
C. SMTP
D. DNS
15、MIDI是一种数字音乐的国际标准,MIDI文件存储的____________。

A.不是乐谱而是波形
B.不是波形而指令序列
C.不是指令序列而是波形
D.不是指令序列而是乐谱
16、已知公式:
2 (x=0)
fun(x)= 1 (x=1)
(x-1)+x*fun(x-2)(x>1)
则fun(4)的值是_______
A.25
B.30
C.33
D. 28
17、在完全二叉树中,若一个结点是叶结点,则它没_____
A. 左子结点
B. 右子结点
C. 左子结点和右子结点
D. 左子结点、右子结点和兄弟结点
18、一棵含有101个结点的完全二叉树存储在数组A[1..101]中,对1≤k≤101,若A[k]是叶子结点,则
k的最小值是______。

A.51
B. 50
C. 49
D. 48
19、已知数组A中,每个元素A[I,J]在存储时要占3个字节,设I从0变化到8,J从1变化到10,分配内存时是从地址SB开始连续按行分配的.试问:A[4,8]的起始地址为_____.
A. SB+141
B. SB+180
C. SB+142
D. SB+181
20、下面关于图的存储的叙述中正确的是______。

A. 用相邻矩阵法存储图,占用的存储空间大小只与图中结点个数有关,而与边数无关。

B. 用相邻矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关。

C. 用邻接表法存储图,占用的存储空间大小只与图中结点个数有关,而与边数无关。

D. 用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关。

二、问题解答:(4+6=10分)
1、将一支铅笔、一枝原子笔和一个橡皮擦分别放入A、B、C三位女孩的笔盒中,每个笔盒
只能放一种文具,且三个笔盒内放的文具都不相同。

下列三句叙述中只有一句为真,其余二句为假。

试问哪一句为真?_____
①A的笔盒中放的是铅笔。

②B的笔盒中没有铅笔。

③C的笔盒中没有橡皮擦。

2、小娟喜欢收集布偶,她将红、蓝、黄色的趴趴熊、kitty猫、狗布偶各1只(共9只)排
成三行三列的方阵,然后请她的北北来猜。

小娟提示说:
①红色的动物都在第一列。

②黄色的动物都不在第三列。

③kitty猫只能在四个角或正中间。

④趴趴熊只能在第一行最上面二个位置或在第三行最下面一个位置。

第二行最下面一个位置放的是_______颜色的______布偶。

三、看程序写结果:(8+10+12=30分)
1.var x,y:integer;
function gcd(x,y:integer):integer;
var r:integer;
begin
repeat
r:=x mod y;
x:=y;
y:=r;
until r=0;
gcd:=x;
end;
begin
x:=80;y:=98;
writeln(x*y div gcd(x,y));
end.
输出:
2. const n=12;
var i,j:integer;
list:array[0..n] of integer;
begin
for i:=1 to n do read(list[i]);
for i:=2 to n do
begin
list[0]:=list[i];
j:=i-1;
while list[0]<list[j] do
begin
list[j+1]:=list[j];
dec(j);
end;
list[j+1]:=list[0];
end;
for i:=1 to n do write(list[i]:5);
end.
输入:67 98 7823 2332 2323 64 90 -34 121 -98 22 67 输出:
3. var i,j,k,n:integer;
a:array[1..100,1..100] of integer;
begin
readln(n);
k:=1;
i:=1;j:=1;a[i,j]:=1;
while k<n do
begin
if (i=1) and (j mod 2=1) then inc(j)
else if (j=1) and (i mod 2=0) then inc(i)
else if (i+j) mod 2=0 then begin dec(i);inc(j);end
else if (i+j) mod 2=1 then begin inc(i);dec(j);end;
inc(k);a[i,j]:=k;
end;
writeln(i,'/',j);
end.
输入:1999
输出:
四、程序填空:(12+18=30分)
1、一个数如果正好等于其因子之和,就称其为“完数”。

例如6的因子是1,2,3,并且6=1+2+3,所以6是一个“完数”。

下面的程序可以输出2──n之间的所有完数之和。

其中n为2~1000之间的任意整数。

请将程序填写完全。

PROGRAM bs1;
V AR a,n,s:Integer;
FUNCTION func(n:Integer):Boolean;
V AR s,k:Integer;
BEGIN
s:=0;
FOR k:=1 TO ①DO
IF n MOD k=0 THEN s:= ②;
IF ③THEN func:=True
ELSE func:=False
END;
BEGIN
s:=0;Readln(n);
FOR a:=2 TO n DO
IF func ④THEN s:=s+a;
Writeln(s)
END.
2.本程序的功能是将中缀表示的算术表达式转换成后缀表示。

如中缀表达式(A-(B*C+D)*E)/(F+G)的后缀表示为ABC*D+E*-FG+/
为了方便,假定变量名为单个英语字母,运算符只有+-×/(均为双目运算符,左结合),
并假定所提供的算术表达式非空且语法是正确的。

另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。

各数组意义如下:
POLISH[] 存储其后缀表示;
s[] 是一个后进先出栈。

函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级如下表示:
CHAR PRIOR(CHAR)
* / 4
+ - 3
( 2
) 1
label 10;
var
input:string;
polish,s:array[1..100] of char;
k,p,i:integer;
function prior(ch:char) : integer;
begin
if (ch='*') or (ch='/') then prior:=4;
if (ch='+') or (ch='-') then prior:=3;
if ch='(' then prior:=2;
if ch=')' then prior:=1;
end;
procedure a;
begin
①;
②;
end;
procedure b;
begin
③;
④;
⑤;
end;
begin
input:='(A-(B*C+D)*E)/(F+G)';
k:=0;p:=0;i:=1;
while i<=length(input) do
begin
if (input[i]='+') or (input[i]='-') or (input[i]='*') or (input[i]='/') then begin
while p<>0 do
begin
if ⑥then b else goto 10 ;
end;
10: a;
end
else if input[i]='(' then
begin
a;
end
else if input[i]=')' then
begin
while s[p]<>'(' do b;
p:=p-1;
end
else
begin
k:=k+1;
polish[k]:=input[i];
end;
i:=i+1;
end;
while p<>0 do b;
writeln(polish);
end.
信息学竞赛初赛模拟试题答案(十六)
一、选择填空:(每题1.5分,共30分)
二、问题解答:(第一题4分,第二题6分,共10分)
1、 C
2、蓝狗
三、写运行结果(每小题5分,共30分)
1、3920
2、-98 -34 22 64 67 67 90 98 121 2323 2332 7823
3、18/46
四、完善程序(每空3分,共30分)
1.2.
(1)(n div 2)(1)p:=p+1
(2)s+k (2)s[p]:=input[i]
(3)s=n (3)k:=k+1
(4)(a)(4)polish[k]:=s[p]
(5)p:=p-1
(6)prior(input[i])<=prior(s[p])。

相关文档
最新文档