📄 1996年9月二级笔试试题pascal.txt
字号:
1996年9月全国计算机等级考试二级笔试试卷
基础知识和PASCAL语言程序设计
(考试时间120分钟,满分100分)
一. 选择题(1~40每个选项1分,41~50每个选项2分,共60分)
下列各题A),B),C),D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(21)下列常量说明中,合法的是
A)CONST COLOR=RED。。BLUE; B)CONST CONST=10*5;
C)CONST X1:=3。9; D)CONST ABC='ABC';
(22)下列类型的变量中,不能用WRITE语句直接输出的变量是
A)布尔型变量 B)枚举型变量度 C)整型变量度 D)字符变量
(23)下列表达式中值为假的是
A)'AB'<'ABC' B)SUCC(FALSE)=TRUE C)ODD(35+1)=FALSE D)219<>219
(24)已知A,B,C,D是类型简单变量,且都已有互不相同的值,执行下列语句
B:=A; A:=C; D:=A; D:=B;
后,其值相等的变量是
A)A,D B)A,C C)C,B D)B,A
(25)下面合法的PASCAL常量是
A)。25 B)"RED" C)'%' D)3E-2。5
(26)设A,B,C,D,E均为整型变量,且A=13,B=2,C=10,D=3,E=2,则表达式:
A-B*C DIV D MOD E的值是
A)13 B)-7 C)11 D)0
(27)有如下说明: CONST S=50;
VAR A:INTEGER; B:REA; C:CHAR;
下面哪个语句是错误的?
A)A:=ROUND(B); B)C:=CHR(S) C)S:=50; D)B:=A;
(28)下列哪个类型说明是错误的?
A) TYPE T1=PACKED ARRAY[1。。20] OF CHAR;
B) TYPE T1=(A,B,C,D,E);
T2=ARRAY[A。。B] OF CHAR;
C) TYPE T1='A'。。'Z';
D) TYPE T1=(1,2,3,4);
T2=ARRAY[1。。4] OF INTEGER;
(29)设有说明VAR F:FILE OF INTEGER;则F所代表的文件是
A)ASCII码文件 B)二进制文件 C)文本文件 D)存放整数的文本文件
(30)下列哪个表达式无错误且结果是空集?
A)[5]-[1。。4] B)[5]+[1。。4] C)[5]*[1。。4] D)[5] IN [1。。4]
(31)设三个字符组成的集合是['A','B''C'],其子集共有多少个?
A)9个 B)8个别 C)7个 D)6个
(32)算式的正确PASCAL表达式是
A) B/A/A*(N-1)*SQRT(EXP(LN(3*A-B)*N))
B) B/A/(A*(N-1))*SQRT(EXP(LN(3*A-B)*N))
C) B/A/A*(N-1)*SQRT((3*A-B)**N)
D) B/A/A/(1/(N-1))*SQRT(EXP(LN(3*A-B)*N))
(33)设A,B,C,D均为整型变量,有下面的程序段
A:=0;B;=0;
READ(A,B);
READLN(C);
READLN(D);
若从键盘输入: 1
2 3 4
5 6 7 (注:表示回车)
则A,B,C,D中的数是
A)1,0,2,5 B)1,2,3,5 C)1,2,5,6 D)1,2,3,4
(34)有变量说明如下: VAR P,Q:^INTEGER;
A:ARRAY[1..10 OF INTEGER;
以下哪些语句是正确的?
A)P^:=4; Q^:=5; A[P^]:=Q^; B)P^:=4; Q^:=5; A[P]:=Q^;
C)P^:=4; Q^:=5 ; A[P^]:=Q; D)P^:=4; Q^=5; A[P]:=Q;
(35)要用一个数组元素存放某班30人3门课的考试成绩(考试成绩保留1位小数),下面哪个说明中的数组可以存放这些数据?
A) VAR S:ARRAY[1。。3,1。。30] OF INTEGER;
B) VAR S:ARRAY['A'。。'C',1。。30] OF REAL;
C) VAR S:ARRAY[1。。30,BOOLEAN] OF REAL;
D) VAR S:ARRAY[1。。30,'A'。。'C'] OF INTEGER;
(36)如果用T1类型的变量存放某人的姓名(最多4个汉字)。出和日期和式资,则T1应是下面哪种类型?
A)T1=RECORD B)T1=RECORD
NAME:INTEGER; NAME:ARRAY['A'。。'H'] OF CHAR;
YEAR,MONTH,DAY:INTEGER; YEAR,MONTH,DAY:CHAR;
WAGE:REAL; WAGE:BOOLEAN;
END; END;
C)T1=RECORD D)T1=ARRAY[1。。8,1。。4] OF INTEGER;
NAME:ARRAY[1。。8] OF CHAR;
YEAR,MONTH,DAY:INTEGER;
WAGE:REAL;
END;
(37)设有如下说明:
CONST A=1;B=2;C=3;
VAR X:ARRAY[1。。15] OF INTEGER;
且已知X[1]=1;X[2]=7;X[3]=9;X[4]=1;X[5]=6;
则表达式:(X[B]-1>x[5])and (x[c]/c<>0 ) or not(x[a+b]>(a+b))的值是
A)TRUE B)FALSE C)0 D)1
(38)设CH是字符型变量,有表达式如下:
(ch<>'a')and (ch<>'c') and (ch<>'h')
下面哪个表达式与该表在式完全等价(即当CH为任何值时,两表达式的值均为相同)?
A) NOT(CH IN['A'。。'H'])
B) NOT(CH IN['H','C','A'])
C) NOT(CH IN['A'。。'B'])AND NOT(CH IN['C'。。'G'])AND NOT(CH IN['H'])
D) CH NOT IN['A','C','H']
(39)有如下说明: VAR A:INTEGER; B:1。。100; C:REAL;
PROCEDURE P1(X:REAL;VAR Y:REAL);
下面的过程调用中哪个是正确的?
A)P1(A,B); B)P1(C,D); C)P1(C,A); D)P1(B,C);
(40)已知有数组说明: VAR A:ARRAY[1。。10] OF INTEGER;
A中的值如下图示:
执行语句WRITELN(A[A[7] DIV A[3]])后的输出是
A)4 B)6 C)3 D)14
(41)程序 FOR I:=1 TO 5 DO
FOR J:=2 TO I DO
WRITELN('*');
输出'*'号的个数是
A)5 B)10 C)15 D)25
(42)已知:CH1,CH2都是字符型变量,设有程序段如下:
READ(CH1,CH2);
IF CH2<>'A' THEN
BEGIN
CASE CH1 OF
'A':CASE CH2 OF
'C':WRITE('AC');
'B':WRITE('AB')
END;
END
ELSE WRITE('BA');
若执行此程序段时输入的数据是AB,则输出是
A)AC B)BB C)BA D)AB
(43)下面程序段不能实现求阶乘8!(结果在P中,P是实型变量)的是
A)P:=1; B)P:=2;
FOR N:=2 TO 8 DO FOR N:=8 DOWNTO 3 DO
P:=P*N; P:=P*N;
C)P:=1;N:=1; D)P:=1;N:=2;
WHILE N<=8 DO REPEAT
BEGIN P:=P*N;
N:=N+1; N:=N+1
P:=P*N UNTIL N>8;
END;
(44)已知有如下说明:
VAR A:ARRAY[1。。4,2。。5] OF INTEGER;
B:ARRAY[2。。5,1。。4] OF INTEGER;
I, J:INTEGER;
有A已赋值,若将A的所有元素送给B,下面的程序段运行时无错误的是
A)FOR I:=1 TO 4 DO B)FOR I:=1 TO 4 DO
FOR J:=1 TO 4 DO FOR J:=2 TO 5 DO
B[J,I]:=A[I,J]; B[I,J]:=A[I,J];
C)FOR I:=1 TO 4 DO D)FOR I:=1 TO 4 DO
FOR J:=2 TO 5 DO B[I,I+1]:=A[I,I+1];
B[I+1,J-1]:=A[I,J];
(45)已知A,B,C,W是同类型变量,A,B均已赋值,且满足A=B THEN W:=B; IF W<=C THEN WRITE('W=',W) ELSE W:=C; 时为能把C的值放入W中,键盘输入的C值应取的范围不能是 a)B>C B)C>B C)C>A且C=60)则显示"PASS",如果A成绩不及格,则显示"FAIL",如果A成绩及格而B成绩不及格则不做任何处理,有待以后补考,下列程序段中哪个可实现上述要求? A)IF A>=60 THEN B)IF A<60 THEN IF B>=60 THEN WRITELN('FAIL') WRITELN('PASS') ELSE ELSE IF B>=60 THEN
WRITELN('FAIL'); WRITELN('PASS');
C)IF (A>=60) AND (B>=60) THEN D)IF B>=60 THEN
WRITELN('PASS') IF A>=60 THEN
ELSE WRITELN('PASS')
IF B<60 THEN ELSE
WRITELN('FAIL'); WRITELN('FAIL');
(47)PROGRAM PROG1(INPUT,OUTPUT);
VAR A,B:INTEGER;
PROCEDURE P1(X:INTEGER; VAR Y:INTEGER);
BEGIN
Y:=X+Y;
WRITELN(X:3,Y:3)
END;
BEGIN
A:=5; B:=8;
P1(A,B);
P1(A+B,A);
P1(A DIV B,B)
END
执行上面程序的输出是
A)5 13 B)5 13 C)5 13 D)5 13
18 5 18 23 18 5 18 23
1 13 1 14 1 14 1 13
(48)设N,K为整型变量,要求当常量A为1~100内(含1和100)任意整数时都能把小于A*A的最大整数放入变量N中,下列哪个程序可以实现上述要求?
A)N:=1; B)N:=0;
REPEAT REPEAT
N:=N+1 N:=N+1
UNTIL N>=A*A; NUTIL N>=A*A;
N:=N-1;
C)K:=0; D)N:=0;
WHILE KA*A DO BEGIN BEGIN N:=K;K:=K+1 K:=N:N:=N+1 END; END; (49)有函数:FUNCTION F1(A:INTEGER);INTEGER; VAR N,D:INTEGER; BEGIN N:=0;D:=2*A; WHILE D>=A DO
BEGIN
D:=D DIV 3;N:=N+1
END;
F1:=N
END;
设A,B,C均为整型变量,下面的程序段均调用函数F1,请挑出执行是会出现死循环的程序段。
A)B:=100; C:=2*(F1(B)+5); B)FOR B:=1 TO 5 DO
WRITELN(A:5,C:5); IF F1(B)>3 THEN
WRITELN(F1(B)); C:=F1(B*B);
C)B:=1; D)B:=1;
REPEAT WHILE F1(B)>3 DO
B:=B+1 B:=F1(B*B)+F1(B);
UNTIL F1(B)>3;
(50)设有以下函数说明:
FUNCTION P(N,X:INTEGER):INTEGER;
BEGIN
IF N=0 THEN P:=1
ELSE IF N=1
THEN P:=X
ELSE P:=TRUNC(((2*N)*P(N-1,X)-(N-1)*P(N-2,X))/N);
END
执行语句 Y:=P(3,5)后,Y的值是
A)30 B)14 C)21 D)34
二. 填空题:
请将每空的正确答案写在答题卡1~20序号的横线上,答在试卷上不得分。
(6)下面的程序从键盘接收任意6个数放入数组A中, 8 1 4 2 5 6
假设这6个数为:8 1 4 2 5 6 ,则要输出一个具有 6 8 1 4 2 5
如右内容的方阵。 5 6 8 1 4 2
2 5 6 8 1 4
4 2 5 6 8 1
1 4 2 5 6 8
PROGRAM EXAM(INPUT,OUTPUT);
VAR A:ARRAY[1。。6] OF INTEGER;
I,J,K:INTEGER;
BEGIN
FOR I:=1 TO 6 DO
READ(__________);
READLN;
FOR I:=1 TO 6 DO
BEGIN
IF I=1 THEN K:=1
ELSE K:=____________;
FOR J:=1 TO_____________DO
BEGIN
WRITE(A[K]:2);
IF K=6 THEN K:=1
ELSE K:=______________
END;
WRITELN
END
END
(7)下面的程序最多可输入100位学生的姓名,姓名全由大写英文字母组成,输入'?'后则停止输入,然后按字典打印这些姓名。
PROGRAM SORT(INPUT,OUTPUT);
CONST MAX=100;LENGTH=20;
TYPE STRING=PACKED ARRAY[1。。LENGTH] OF CHAR;
VAR NAME:ARRAY[1。。MAX] OF STRING;
T:STRING;
I,J,COUNT:INTEGER;
BEGIN
I:=1;
READLN(NAME[I]);
WHILE NAME[I]<>'?' DO
BEGIN
_____________;
READLN(NAME[I])
END;
COUNT:=______________;
FOR I:=1 TO____________DO
BEGIN
FOR J:=I+1 TO COUNT DO
IF NAME[I]_____________NAME[J] THEN
BEGIN
T:=NAME[I];
NAME[I]:=NAME[J];
NAME[J]:=T
END;
WRITELN(___________)
END
END
(8)已知有类型说明:
TYPE LINK=^NODE;
NODE=RECORD
DATA:INTEGER;
NEXT:LINK
END;
设HEAD为LINK类型变量,并指向一个不少于2个结点的单链表,如下图所示,设该链表已经建立,下面的过程要遍历链表,并从HEAD所指的结点开始依次打印出各结点数值。
PROCEDURE PNODE(HEAD:___________);
VAR P:LINK;
BEGIN
P:=HEAD;
WHILE P<>____________DO
BEGIN
WRITE(P^.DATA);
p:=_____________
END;
WRITELN
END
(9)在下列程序中,当输入一个定的数N后,能输出所有不超过N的,其平方由左右对称(1位数也认为是左右对称)的数字组友成的数。例如:若输入23,则应输出:1,2,3,11,22,因为它们的平方依次是:1,4,9,121,484,都是左右对称的数字组成的数
PROGRAM PALINDROME(INPUT,QUTPUT);
CONST MAX=1000;
VAR M,N,I,J,S:INTEGER;
D:ARRAY[0。。MAX] OF INTEGER;
BEGIN
READLN(N);
FOR M:=1 TO N DO
BEGIN
{计算M的平方且存放于S}
_______________
{把组成数S每位数字存放于数组D中}
J:=0;
WHILE S》0 DO
BEGIN
J:=J+1;
D[J]:S MOD 10;
--------
END;
{判断组成数S 的数字是否左右对称}
I:=1;
WHILE(D[I]=D[J]) AND (I〈J〉 DO
BEGIN
I:=I+1;J:=J-1
END;
{若对称则输出}
IF I〉=J THEN WRITELN (------)
END
END
1996年9月全国计算机等级考试二级笔试试卷基础知识和PASCAL 语言程序设计答案及评分标准
一, 选择((1)~(40)题每题1分,(41)~(50)题第题2分,共和制60分)
1,C 2,B 3,C 4,B 5,B
6,D 7,C 8,D 9,D 10,B
11,C 12,B 13,D 14,C 15,D
16,B 17,C 18,C 19,D 20,A
21,D 22,B 23,D 24,B 25,C
26,A 27,C 28,D 29,B 30,C
31,B 32,B 33,B 34,A 35,B
36,C 37,B 38,B 39,D 40,A
41,B 42,D 43,C 44,C 45,B
46,B 47,B 48,C 49,C 50,B
二, 填空题(每空2分,共同40分)
(所有字母都充许大,小写或大小写混合)
1,255
2,-77
3,COMMAND。COM
4,CD C:
5,C;\D1>
6.A[I]
7.8-I (写成8-I;不扣分)
8.6
9.SUCC(K)或 K+1(答案后面也可加;号)
10.I:=I+1 或 I:=SUCC(I)(答案后面加;号不扣分)
11.I-1(只写I扣1分,答案后面加;号不扣分)
12.COUNT-1
13.>或>=
14.NAME[I]
15.LINK
16.NIL
17.P^.NEXT或P^.NEXT;
18.S:=M*M;(少写分号扣1分)
19.S:=S DIV 10 或S:=:TRUNC(S/10) (答案后面也可加;号)
20.M
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -