left 您的位置: 洪恩在线 -> 继续教育 -> 计算机考级 right

请给我们来信

我要发言

计考之友
  
  其他科目  
 

1997年9月全国计算机等级考试二级笔试试卷基础知识和PASCAL语言程序设计


    (考试时间120分钟,满分100分)

    一。选择题(1~40每个选项1分,41~50每个选项2分,共60分)

    下列各题A)B)C)D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

    (1)结构化程序的结构由三种基本结构组成,下面哪个不属于这三种基本结构?

    A)顺序结构B)输入输出结构C)分支结构D)循环结构

    (2)下列常量说明中,合法的是

    A)CONST N,M=10 B)CONST ZERO:=0;

    C)CONST ——B=——1;D)CONST ='';

    (1)下列中合法的PASCAL标识符是

    A)A1B2C3 B)FOR C)2AB D)A[1]

    (2)已知TYPE ABC=(A,B,C);则下列中不属于顺序类型的变量说明是

    A)VAR X1:ABC;B)VAR X2:B,C;

    C)VAR X3:BOOLEAN;D)VAR X4:SET OF ABC;

    (5)下面函数中自变量只能是顺序类型的函数是

    A)ROUND()B)ABS()C)EOF()D)ORD()

    (6)设有说明

    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')

    (7)已知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

    《语句》《语句》

    (8)下列表达式中,结果不为TRUE的是

    A)[1.。10]=[1.。5,6.。10]B)[1,2,3]《[1,2,3,4]

    C)[2,4]》=[]D)7 IN [1.。10]

    (9)下面哪种类型的文件可以用DOS的TYPE命令在屏幕上显示其内容?

    A)FILE OF CHAR 型文件B)FILE OF INTEGER型文件

    C)FILE OF REAL 型文件D)FILE OF BOOLEAN 型文件

    (10)已知有说明如下: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);

    (11)设有过程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);

    (12)下列哪个类型说明是错误的?

    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;

    (13)要说明一个名为BODIES包含下面和值的集合变量:

    (1)RED ()YELLO2 (1)BLUE (2)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);

    (14)设有如下说明: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)子界型和记录型

    (16)设有如下说明:VAR Q,P:^INTEGER;

    且已知有过程调用NEW(P);NEW(Q);则下面语句正确的是

    A)READ(P,Q);B)P^:=Q^0

    C)P:=P1 D)P:=PQ;

    (17)设变量说明如下:

    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);

    (18)有下列程序:

    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

    (19)已知有如下说明: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)数组中数的最大值

    (20)设有说明

    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);

    (21)下面哪个函数正确返回数组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:=SUMA[K];

    END;

    B)FUNCTION SUM(A:T1):INTEGER;

    VAR S,K:INTEGER;

    BEGIN

    FOR K:=1 TO 10 DO

    S:=SA[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:=K1;

    S:=SA[K]

    UNTIL K=10

    END

    C)FUNCTION SUM(A:T1):INTEGER;

    VAR S,K:INTEGER;

    BEGIN

    S;=0;K:=0;

    REPEAT

    K:=K1;

    S:=SA[K]

    UNTIL K=10;

    SUM:=S

    END

    (22)有下面程序:

    PROGRAM P1(OUTPUT);

    VAR K,I:INTEGER;

    BEGIN

    FOR K:=1 TO 10 DO

    BEGIN

    I:=K;

    REPEAT

    WRITE('*');

    I:=I1

    UNTIL I=K2

    END;

    WRITELN

    END

    该程序执行后输出'*'的个数是

    A)100 B)50 C)30 D)20

    (23)设函数说明为

    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(1725,3);则Y的值为

    A)0 B)2 C)5 D)7

    (24)有下面程序:

    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)*

    **********

    *************

    ****************

    *******************

    (25)有下列函数说明:

    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

    (26)已知有变量说明: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

    (27)设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;

    (28)下面程序中有3个可以求Y=5!

    (1)PROGRAM P37;

    VAR Y,I:INTEGER;

    BEGIN

    Y:=1;

    FOR I:=2 TO 5 DO

    Y:=Y*I

    END

    ()PROGRAM P37;

    VAR Y,I:INTEGER;

    BEGIN

    Y:=1;

    FOR I:=5 DOWNTO 1 DO

    Y:=Y*I

    END

    (1)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

    (2)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)()C)(1)D)(2)

    (29)有下列程序

    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:=X5;

    Y:=Y5;

    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

    (30)请阅读下面程序:

    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:=SUMA;NUM:=NUM1

    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 11/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:=N1;

    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

    二。填空题(1~20,每空2分,共40分)

    6)EOF(FPOINT)

    FPOINT,A

    7)4——I或——i4

    I

    4——I或——I4

    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]



【关闭窗口】