⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1997年9月二级笔试试题pascal.txt

📁 c++的大量习题,对二级考试大有帮助. 希望大家满意.
💻 TXT
字号:
1997年9月全国计算机等级考试二级笔试试卷
基础知识和PASCAL语言程序设计
(考试时间120分钟,满分100分)
一. 选择题(1~40每个选项1分,41~50每个选项2分,共60分)
下列各题A)B)C)D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(21)结构化程序的结构由三种基本结构组成,下面哪个不属于这三种基本结构?
A)顺序结构 B)输入输出结构 C)分支结构 D)循环结构
(22)下列常量说明中,合法的是
A)CONST N,M=10 B)CONST ZERO:=0;
C)CONST -B=-1; D)CONST BLANK=' ';
(23)下列中合法的PASCAL标识符是
A)A1B2C3 B)FOR C)2AB D)A[1]
(24)已知 TYPE ABC=(A,B,C);则下列中不属于顺序类型的变量说明是
A)VAR X1:ABC; B)VAR X2:B,C;
C)VAR X3:BOOLEAN; D)VAR X4:SET OF ABC;
(25)下面函数中自变量只能是顺序类型的函数是
A)ROUND() B)ABS() C)EOF() D)ORD()
(26)设有说明
CONST ZERO='0';PI=3。1416;STR='ABC';
VAR R:REAL;I:INTEGER;B;BOOLEAN;C:CHAR;
下面赋值合法的是
A)R:=ZERO B)B:=PI>=3 C)C:=STR D)C:=ORD('B')
(27)已知A和B都是记录类型变量,根据下列哪一个WITH语句可以判定B肯定嵌套在A中?
A)WITH A,B DO B)WITH B,A DO C)WITH A DO D)WITH B DO
< 语句> < 语句 > WITH B DO WITH A DO
<语句> < 语句>
(28)下列表达式中,结果不为TRUE的是
A)[1。。10]=[1。。5,6。。10] B)[1,2,3]<[1,2,3,4]
C)[2,4]>=[ ] D)7 IN [1。。10]
(29)下面哪种类型的文件可以用DOS的TYPE命令在屏幕上显示其内容?
A)FILE OF CHAR 型文件 B)FILE OF INTEGER型文件
C)FILE OF REAL 型文件 D)FILE OF BOOLEAN 型文件
(30)已知有说明如下: TYPE T1=1。。100;
VAR A,B:T1;X,Y:INTEGER;
PROCEDURE P1(VAR A,B:INTEGER;X,Y:REAL);
下面哪个过程调用是正确的?
A)P1(A,B,X,Y) B)P1(X,Y,A,B);
C)P1(A,X,B,Y) D)P1(Y,B,X,A);
(31)设有过程P1中A,B,C都是整型变量,其中A为值形式参数,B,C为变量形式参数,下面符合要求的过程首部是
A) PROCEDURE P1(VAR A,B,C:INTEGER);
B) PROCEDURE P1(A:INTEGER;VAR B;INTEGER;C:INTEGER);
C) PROCEDURE P1(A:INTEGER;VAR B:INTEGER;VAR C:INTEGER);
D) PROCEDURE P1(A:INTEGER;B,C:INTEGER);
(32)下列哪个类型说明是错误的?
A) TYPE 
REC=RECORD
N:('A'。。'J');
X,Y:ARRAY['A'。。'J'] OF CHAR
END;
ARR=ARRAY['A'。。'J'] OF REC;
B) TYEP
REC=RECORD
N:(A,B,C,D,E,F,G,H,I,J);
X,Y:ARRAY['A'。。'J'] OF CHAR
END
ARR=ARRAY['A'。。'J'] OF REC;
C) TYPE 
REC=RECORD
N:INTEGER;
X,Y:ARRAY[1。。10] OF CHAR
END
ARR=ARRAY[1。。10] OF REC;
D) TYPE
REC=RECORD
N:'A'。。'J';
X,Y:ARRAY['A'。。'J'] OF CHAR
END;
ARR=ARRAY['A'。。'J'] OF REC;
(33)要说明一个名为BODIES包含下面和值的集合变量:
(1)RED (2)YELLO2 (3)BLUE (4)WHITE (5)BLACK (6)GREEN
在下面给出的说明中,错误的是
A) TYPE MIX=[RED,YELLOW,BLUE,WHITE,BLACK,GREEN];
VAR BODIES:MIX;
B) TYPE COLOR=(RED,YELLOW,BLUE,WHITE,BLACK,GREEN);
MIX=SET OF COLOR;
VAR BODIES:MIX;
C) TYPE MIX=SET OF (RED,YELLOW,BLUE,WHITE,BLACK,GREEN);
VAR BODIES:MIX;
D) VAR BODIES:SET OF (RED,YELLOW,BLUE,WHITE,BLACK,GREEN);
(34)设有如下说明:TYPE ARR=ARRAY[1。。10] OF CHAR;
PTR=^ARR;
VAR P:PTR;
若已执行了NEW(P),下面正确的赋值语句是
A)P^[5]:='A' B)P[5]^:='A' C)P^:='A' D)P[5]:='A'
(35)下列哪组类型的变量都可以作为FOR循环中的循环控制变量?
A)枚举型和实数型 B)枚举型和记录型变量中的子界型域
C)字符型和集合型 D)子界型和记录型
(36)设有如下说明:VAR Q,P:^INTEGER;
且已知有过程调用NEW(P);NEW(Q);则下面语句正确的是
A)READ(P,Q); B)P^:=Q^+0
C)P:=P+1 D)P:=P+Q;
(37)设变量说明如下:
VAR CH1,CH2,CH:CHAR;
I1,I2:INTEGER;
R1,R2:REAL;
现在要把值'A','B',12,123,3。4E-4,-15。89依次赋给变量CH1,CH2,I1,I2,R1,R2。设输入数据格式为
A B12
123 3。4-4 -15。89
(表示回车符)
在下列写出的读语句中,错误的是
A) READ(CH1,CH,CH2);READ(I1,I2);READLN(R1,R2);
B) READLN(CH1,CH,CH2,I1);READLN(I2,R1,R2);
C) READLN(CH1,CH,CH2,I1,I2,R1,R2);
D) READLN(CH1,CH2,I1,CH);READLN(I2,R1,R2,CH);
(38)有下列程序:
PROGRAM PP1(OUTPUT);
VAR A:INTEGER;
FUNCTION F1(VAR A:INTEGER):INTEGER;
BEGIN
A:=A*A;
F1:=A-1
END;
BEGIN
A:=3;
A:=F1(A);
WRITELN(A)
END
执行此程序后的输出是
A)2 B)3 C)8 D)9
(39)已知有如下说明:VAR A:ARRAY[1。。10] OF INTEGER;
K,I:INTEGER;
程序段:
K:=1;
FOR I:=1 TO 10 DO
IF A[I]>A[K] THEN
K:=I;
WRITELN(A[K]);
执行后输出的是
A)数组中数的平均值 B)数组中数的总和
C)数组中数的最小值 D)数组中数的最大值
(40)设有说明
TYPE
DATE=RECORD
YEAR:0。。9999;
MONTH:1。。12;
DAY:1。。31
END
PERS=RECORD
NAME:PACKED ARRAY[1。。16] OF CHAR;
BIRTHDATE:DATE;
SEX:(MALE,FEMALE)
END;
VAR
AA:PERS;
下列操作中有三个功能等价且正确,另一个不正确的是
A)READ(AA。BIRTHDATE。YEAR) B)WITH AA DO
READ(BIRTHDATE。YEAR);
C)WITH AA。BIRTHDATE DO D)WITH AA,BIRTHDATE DO
READ(BIRTHDATE。YEAR); READ(YEAR);
(41)下面哪个函数正确返回数组A中数的累加和?
(类型T1为:T1=ARRAY[1。。10] OF INTEGER;)
A) FUNCTION SUM(A:T1):INTEGER;
VAR K:INTEGER;
BEGIN
SUM:=0;
FOR K:=1 TO 10 D0
SUM:=SUM+A[K];
END;
B) FUNCTION SUM(A:T1):INTEGER;
VAR S,K:INTEGER;
BEGIN
FOR K:=1 TO 10 DO
S:=S+A[K];
SUM:=S
END;
(C)FUNCTION SUM(A:T1):INTETER;
VAR S,K:INTEGER;
BEGIN
S:=0;K:=0;
REPEAT
S:=0;K:=0;
REPEAT
K:=K+1;
S:=S+A[K]
UNTIL K=10
END
C) FUNCTION SUM(A:T1):INTEGER;
VAR S,K:INTEGER;
BEGIN
S;=0;K:=0;
REPEAT
K:=K+1;
S:=S+A[K]
UNTIL K=10;
SUM:=S
END
(42)有下面程序:
PROGRAM P1(OUTPUT);
VAR K,I:INTEGER;
BEGIN
FOR K:=1 TO 10 DO
BEGIN
I:=K;
REPEAT
WRITE('*');
I:=I+1
UNTIL I=K+2
END;
WRITELN
END
该程序执行后输出'*'的个数是
A)100 B)50 C)30 D)20
(43)设函数说明为
FUNCTION CHECK(N,K:INTEGER):INTEGER;
VAR M;INTEGER;
BEGIN
REPEAT
M:=N MOD 10;
N:=N DIV 10;
K:=K-1
UNTIL K=0;
CHECK:=M
END
若在主程序中执行调用语句 Y:=CHECK(3725,3);则Y的值为
A)0 B)2 C)5 D)7
(44)有下面程序:
PROGRAM PP2(OUTPUT);
VAR I,J:INTEGER;
BEGIN
FOR I:=5 DOWTO 1 DO
BEGIN
WRITE('*':I);
FOR J:=3 DOWNTO 2*(I DIV 5)+2 DO
WRITE('*':5-I);
WRITELN
END
END
该程序执行后产生的输出是
A) * B) * C) * D) *
** ** *** ***
*** * * ***** * * *
**** * * ******* * * *
***** * * ********* * * *
(45)有下列函数说明:
FUNCTION FIB(N:INTEGER):INTEGER;
BEGIN
IF N=1 THEN FIB:=0
ELSE IF N=2 THEN FIB:=1
ELSE FIB:=FIB(N-1)+FIB(N-2)
END;
表达式 FIB(FIB(5))的值是
A)1 B)2 C)3 D)5
(46)已知有变量说明:VAR A,B:ARRAY[1。。10] OF INTEGER;
I, J:INTEGER;
且数组A的内容如下图所示:
A[1]…… A[10]


则程序段:FOR I:=1 TO 10 DO
BEGIN
B[I]:=0;
FOR J;=1 TO 10 DO
IF A[J]=A[I] THEN
B[I]:=B[I]+1
END
J:=1;
FOR I:=2 TO 10 DO
IF B[I]>B[J] THEN
J:=I;
WRITELN(A[J]):
执行后输出的是
A)8 B)4 C)3 D)2
(47)设K为整型变量,且有以下程序段:
IF (K<=10)AND (K>0)
THEN IF K>5
THEN IF K<8
THEN X:=0
ELSE X:=1
ELSE IF K>2
THEN X:=3
ELSE X:=4
用CRSE语句改写上述程序,执行效果一样的是
A)CASE K OF B)CASE K OF
1,2:X:=4; 1:X:=4;
3,4,5:X:=3; 2,3,4,5:X:=3;
8,9,10:X:=1; 8,9,10:X:=1;
6,7:X:=0 6,7:X:=0
END END
C)CASE K OF D)CASE K OF
1,2:X:=4; 1,2,3:X:=4;
3,4,5:X:=3; 4,5:X:=3;
9,10:X:=1; 8,9。10:X:=1;
6,7,8:X:=0 6,7:X:=0
END END;
(48)下面程序中有3个可以求 Y=5!
(1) PROGRAM P37;
VAR Y,I:INTEGER;
BEGIN
Y:=1;
FOR I:=2 TO 5 DO
Y:=Y*I
END
(2) PROGRAM P37;
VAR Y,I:INTEGER;
BEGIN
Y:=1;
FOR I:=5 DOWNTO 1 DO
Y:=Y*I
END
(3) PROGRAM P37;
VAAR Y:INTEGER;
FUNCTION F(N:INTEGER);INTEGER;
BEGIN
IF N=1 THEN F:=1
ELSE F:=N*F(N-1)
END;
BEGIN
Y:=F(5)
END
(4) PROGRAM P37;
FUNCTION F(N:INTEGER):INTEGER;
BEGIN
IF N=1 THEN F:=1
ELSE F:=F*F(N-1)
END;
BEGIN
Y:=F(5)
END
另一个不能求Y=5!的程序是
A)(1) B)(2) C)(3) D)(4)
(49)有下列程序
PROGRAM TEST(INPUT,OUTPUT);
VAR A,B,C:INTEGER;
PROCEDURE P(VAR X:INTEGER;Y:INTEGER);
VAR M,N:INTEGER;
BEGIN
M:=X*Y;
X:=X+5;
Y:=Y+5;
N:=X*Y;
WRITELN(M:4,N:4)
END;
BEGIN
A:=3;B:=3;
P(A,B);
P(A,B)
END
此程序的运行结果是
A)9 64 B)9 64 C)9 64 D)9 64
9 24 24 104 64 169 9 64
(50)请阅读下面程序:
PROGRAM PP6(INPUT,OUTPUT);
VAR A:INTEGER;
PROCEDURE P2(Y:INTEGER);FORWARD;
PROCEDURE P1(VAR X:INTEGER);
BEGIN
IF X>100 THEN
BEGIN
X:=X-10;
P2(X)
END;
END
PROCEDURD P2;
BEGIN
P1(Y)
END
BEGIN
READLN(A);
P1(A);
WRITELN(A)
END
执行此程序时若从键盘输入229,则产生的结果是
A)P1,P2互相调用,永远无法结束 B)输出99后结束
C)输出219后结束 D)显示错误信息后停止运行
二. 填空题(每空2分,共40分)
请将每空正确答案写在答题卡1~20序号的横线上,答在试卷上不得分
(5) 已知有类型说明:TYPE MYFILE=FILE OF INTEGER;函数DOSUM可求出文件FPOINT中所有整数的平均值。
FUNCTION DOSUM(VAR FPOINT:MYFILE):REAL;
VAR NUM,A,SUM:INTEGER;
BEGIN
RESET(FPOINT);
SUM:=0;NUM:=0;
WHILE NOT ____________DO
BEGIN
READ(_________);
SUM:=SUM+A;NUM:=NUM+1
END;
CLOSE(FPOINT);
DOSUM:=SUM/NUM
END;
(6) 下面程序输出下面的图形(每行之间无空行,每个'*'之间无空格)
*
**
***
****
***
**
*
PROGRAM PRO1(OUTPUT);
VAR I,J:INTEGER;
BEGIN
FOR I:=1 TO 4 DO
BEGIN
FOR J:=1 TO_____________ DO
WRITE('':1);{引号内是一个空格符 }
FOR J:=1 TO___________ DO
WRITE('*':1);
WRITELN
END;
FOR I:=1 TO 3 DO
BEGIN
FOR J:=1 TO I DO
WRITE('':1); {引号内是一个空格符}
FOR J:=1 TO_____________ DO
WRITE('*':1);
WRITELN
END
END
(8) 类型ARR为:TYPE ARR=ARRAY[1。。16] OF INTEGER;
已知数组A中有15个整数已按从小到大的顺序排列,过程INSERTONE把任意整数B填入A中并使A中数据仍然有序。
PROCEDURE INSERTONE(VAR A:ARR;B:INTEGER);
VAR K:INTEGER;
BEGIN
K:;_____________
WHILE (K>1)AND(__________)DO
BEGIN
A[K]:=A[K-1];
K:=K-1
END;
A[K]:=____________
END
(9) 已知E 1+1/1!+1/2!+1/3!+……1/N!
用上述公式求E的近似值,要求累加所有小于10**-6的项值
PROGRAM SJ22(INPUT,OUTPUT);
VAR P,T,E:REAL
N:INTEGER;
BEGIN
E:=1;
N:=1;
T:=1;
_______________
WHILE______________DO
BEGIN
E:=E=T;
N:=N+1;
P:=P*N;
T:=___________
END;
WRITELN(E:10:7)
END
(10) 过程ARRAYSORT对于ARR型数组A中矩阵按每行(第1个下标代表行)的最大值从小到大对矩阵的行进行排序。即:排序后第一行的最大值是各行最大值中最小的,最后一行的最大值是各行最大值中最大的
例如:若原矩阵为
1 3 7 9 2 0 1 1 2 3 
4 3 8 1 6 4 0 2 0 1
0 1 1 2 3 4 3 8 1 6
4 0 2 0 1 1 3 7 9 2
其类型ARR为:TYPE T1=ARRAY[1。。5] OF INTEGER;
ARR=ARRAY[1。。4] OF T1;
请填空完成
PROCEDURE ARRAYSORT(VAR A:ARR);
VAR I,J,K:INTEGER;
FUNCTION MAXONE(B:___________):INTEGER;
VAR A,K:INTEGER;
BEGIN
A:=B[1];
FOR K:=2 TO 5 DO 
IF A___________THEN
SWAP(____________)
END
1997年9月全国计算机等级考试二级笔试试卷
基础知识和PASCAL语言程序设计
答案及评分标准
一. 选择题(1~40题,每题1分;41~50题;每题2分,共60分)
1.D 2。D 3。A 4,B 5,B
6.A 7。D 8。B 9。C 10。C
11.D 12。B 13。B 14。D 15。C
16.B 17。C 18。B 19。B 20。A
21.B 22。D 23。A 24。D 25。D
26.B 27。C 28。B 29。A 30。B
31.C 32。A 33。A 34。A 35。B
36.B 37。D 38。C 39。D 40。C
41.D 42。D 43。D 44。D 45。A
46.C 47。A 48。D 49。B 50。C
二. 填空题(1~20,每空2分,共40分)
6)EOF(FPOINT)
FPOINT,A
7)4-I或-i+4
I
4-I或-I+4
8)16写成16;不扣分
A[K-1]>B或A[K-1]>=B或NOT(A[K-1]=1E-6或NOT(T<1E-6)(1E-6也可写成0。000001)
1/P或1/P;
10)T1
3
MAXONE(A[J])
A[J],A[I]或A[I],A[J]







1997年9月全国计算机等级考试二级笔试试卷 
基础知识和PASCAL语言程序设计
答案及评分标准
一. 选择题(1~40题,每题1分;41~50题;每题2分,共60分)
1.D 2。D 3。A 4,B 5,B
6.A 7。D 8。B 9。C 10。C
11.D 12。B 13。B 14。D 15。C
16.B 17。C 18。B 19。B 20。A
21.B 22。D 23。A 24。D 25。D
26.B 27。C 28。B 29。A 30。B
31.C 32。A 33。A 34。A 35。B
36.B 37。D 38。C 39。D 40。C
41.D 42。D 43。D 44。D 45。A
46.C 47。A 48。D 49。B 50。C
二. 填空题(1~20,每空2分,共40分)
6)EOF(FPOINT)
FPOINT,A
7)4-I或-i+4
I
4-I或-I+4
8)16写成16;不扣分
A[K-1]>B或A[K-1]>=B或NOT(A[K-1]=1E-6或NOT(T<1E-6)(1E-6也可写成0。000001)
1/P或1/P;
10)T1
3
MAXONE(A[J])
A[J],A[I]或A[I],A[J]


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -