歷年計算機軟考程序設計模擬試題及答案

字號:

一、單項選擇題(在每小題的四個備選答案中,選出一個正確的答案,并將其號碼填在題干的括號內。每小題1分,共10分)
    1.下面的( )是pascal中有效的用戶自定義標識符
    A. Program
    B. prog#2
    C. 2ndone
    D. prog2
    2.在ASCII碼字符集中,字符'A'的序數(shù)是65,字符'B'的序數(shù)是66。變量A='B',則ord('A')和ord(A)的值分別是(
    )
    A. 65和65
    B. 65和B
    C. 65和66
    D. A和66
    3.假設要通過read語句分別給變量a和b賦值5和7,數(shù)據(jù)鍵入的順序是:57。則(
    )的格式是正確的(表示空格)
    A. read(ab)
    B. read(b,a)
    C. read(ab)
    D. read(a,b)
    4.下面程序段當x的值為9.95時,下面語句輸出的內容是(
    )
    if x>7.5 then
    begin
    x:=90.0;
    writeln('x is',x:4:2)
    end
    else x:=25.0;
    writeln('x is',x:3:1);
    A. x is 90.00
    B. x is 90.00 x is 90.0
    C. x is 90.00 x is 25.0
    D. x is 25.0
    5.下面各程序段中,( )能在一行中輸出五個'*'
    A.I:=0;
    repeat
    write('*');
    I:=I+1
    until I=5
    B.I:=0;
    repleat
    write('*')
    until I=5
    C.I:=0;
    repeat
    write('*');
    I:=I-1
    until I=5
    D.I:=0;
    repeat
    writeln('*')
    I:=I+2
    until I=5
    6.函數(shù)的結果類型可以是( )
    A. 數(shù)組類型和簡單類型
    B. 記錄類型和簡單類型
    C. 文件類型和簡單類型
    D. 指針類型和簡單類型
    7.設定義和說明如下:
    TYPE COLORTYPE=(READ,BLUE,YELLOW,WHITE,BLACK);
    PERSON=(MAN,WOMAN);
    VAR COLOR:COLORTYPE;
    STUDENT:PERSON;
    下列( )語句是不正確的
    A. FOR COLOR:=RED TO BLACK DO write('MAN');
    B. WHILE COLOR=BLACK DO write('MAN');
    C. IF COLOR<>YELLOW THEN WRITE('YES');
    D. IF WOMAN>RED THEN WRITE('NO');
    8.若有定義:TYPE AR=ARRAY[-2..2,-1..2]OF REAL;它表示AR類型是具有(
    )的二維數(shù)組
    A. 4行5列
    B. 4行3列
    C. 3行4列
    D. 5行4列
    9.動態(tài)變量的撤消必須使用標準過程( )
    A. NOT NEW(P)
    B. DELETE(P)
    C. DISPOSE(P)
    D. ERASE(P)
    10.記錄變量進行賦值運算時,要求這兩個記錄變量類型(
    )
    A. 相同
    B. 相容
    C. 一致
    D. 賦值相容
    二、填空題(每空1分,共15分)
    1.程序的功能模塊設計是指程序模塊應該按照程序執(zhí)行的功能來劃分。這種程序模塊應具有簡單性、___________和完整性。
    2.在PASCAL中,四種標準類型是:整型,實型,___________和布爾類型。
    3.表達式odd(succ (pred(5)))的值為___________。
    4.表達式5 * 2 div 4 * 4的值為___________。
    5.下面程序段的輸出結果是___________。
    if succ(6)=pred(4) then writeln ('red')
    else if pred(7)=succ(5) then writeln('yellow')
    else writeln('blue');
    6.設ch為字符型變量,則條件(ch<>'x')and(ch<>'y')and(ch<>'z')用集合表示___________。
    7.標準PASCAL規(guī)定,F(xiàn)OR語句執(zhí)行完畢后,其循環(huán)控制變量的值___________。
    8.設有以下說明:
    var a,b,c:integer;
    則下面程序段的輸出是___________。
    a:=5;b:=8;c:=1;
    while b-a>c do
    begin
    a:=b-a;b:=b-a
    end;
    writeln(b);
    9.下面程序的輸出結果是___________。
    program pp(output);
    const m=10;n=5;
    var x,y:integer;
    procedure p1;
    var y:integer;
    begin
    y:=m+n;x:=m
    end;
    y:=m*n;
    pl;
    writeln(y)
    end.
    10.形式參數(shù)有___________,變量參數(shù),過程參數(shù)和函數(shù)參數(shù)四種。
    11.子界類型屬于有序類型,上,下界屬于同一有序類型,且要求上界___________下界。
    12.設有以下說明:
    type weekday=(sun,mon,tue,wed,thu,fri,sat);
    var day;weekday;
    以下賦值語句:
    day:=succ(wed);
    使用函數(shù)pred()來實現(xiàn)與上述語句等價的賦值語句是:______________________。
    13.在各種類型的數(shù)組變量中,只有___________數(shù)組變量可以作為輸出語句的參數(shù)。
    14.使用標準函數(shù)___________,可以判斷是否讀到文本文件一行的行尾字符。
    15.設var p:^T;則p是指針變量,而___________是類型為T的動態(tài)變量。
    三、改錯題(指出所給程序中的錯誤,在錯誤位置處打上橫線標記,并注明其錯誤原因。每題4分,共20分)
    1.程序功能,求絕對值小于100的任意兩個非零整型數(shù)據(jù)的積和商。
    程序:PROGRAM calcA(input,output);
    VAR a,b:INTEGER;
    multi,div:REAL;
    BEGIN
    readln(a,b);
    multi=a*b; div=a/b;
    writeln(a:4,b:4,multi:8:2,div:8:2)
    END.
    2.程序功能,找出任意三個整型數(shù)據(jù)x、y、z中的最小者。
    程序:PROGRAM findmin(input,output);
    VAR x,y,z,min:INTEGER;
    BEGIN
    readln(x,y,z);
    IF x
    IF y
    IF z
    writeln(x:4,y:4,z:4);
    writeln('MINIMUM IS',min:4)
    END.
    3.程序功能:使用嘗試法檢驗任一自然數(shù)是否為素數(shù)。
    檢驗方法:任一自然數(shù)n,如果從2開始到根號n為止的所有自然數(shù)都不能整除(除盡)n,則n即為素數(shù)(也稱質數(shù))。
    程序:PROGRAM prime2(input,output);
    VAR i,n: INTEGER;
    isprime: BOOLEAN;
    BEGIN
    readln(n);
    FOR i:=2 TO trunc(sqrt(n)) DO
    IF nMOD i=0
    THEN isprime:=FALSE
    ENDDO;
    IF isprime
    THEN writeln(n,'is a prime!')
    ELSE writeln(n,'is not a prime!')
    END.
    4.程序功能:用自定義的過程計算一個任意整數(shù)的隨機數(shù),然后再將計算出的隨機數(shù)與測試數(shù)據(jù)test運算后輸出,整數(shù)r的隨機數(shù)x可用如下公式計算:
    x=((r*168+2159) MDO 32767)/32767
    (設機器正整數(shù)為32767)
    程序:PROGRAM calc(input,output);
    CONST test=200.88;
    VAR a,b: REAL;
    PROCEDURE random(VAR r,rnd:INTEGER);
    BEGIN
    rnd:=(r*168+2159) MOD MaxInt
    md:=trunc(rnd/MaxInt)
    END;
    BEGIN
    random(400+test,a);
    random(400-test,b);
    writeln('a=',a,'b=',b);
    END.
    5.程序功能:將數(shù)組A中的數(shù)據(jù)復制到數(shù)組B中。
    程序:PROGRAM copyarray2(input,output);
    VAR a,b: ARRAY[10..1] OF INTEGER;
    BEGIN
    readln(a);
    b:=a;
    write(b);
    END.
    四、閱讀程序(閱讀給出的程序,將其運行結果寫在橫線上。第1、2題各4分,第3、4題各5分,第5題7分,共25分)
    (以下↙表示回車換行符)
    1. program p5(input,output);
    var ch:char;
    n:integer;
    begin
    n:=0;
    read(ch);
    repeat
    n:=n*2+ord(ch)-ord('0');
    read(ch)
    until ch='#';
    write(n)
    end.
    執(zhí)行該程序,當輸入1011#↙時,其輸出為:______________________
    2.program p6(output)
    var n,k,i,s:integer;
    begin
    for n:=9 to 10 do
    begin
    s:=0;
    k:=1;
    for i:=1 to n do
    begin
    s:=s+i*k;
    k:=-k
    end;
    writeln(s)
    end
    end.
    一.單項選擇題(每小題1分,共10分)
    1.D
    2.C
    3.D
    4.B
    5.A
    6.D
    7.D
    8.D
    9.C
    10.A
    二.填空題(每空1分,共15分)
    1.獨立性
    2.字符型
    3.TRUE(不區(qū)分大小寫字母)
    4.8
    5.yellow(大寫字母不給分)
    6.not(ch in ['x','y','z']或not (ch in [‘x.'..'z'])
    7.已無定義(或無確定的值,或等價的文字說明)
    8.3
    9.50
    10.值參數(shù)
    11.必須大于(或大于等于)
    12.day:=pred(fri)(不區(qū)分大小寫字母)
    13.字符(或緊湊字符)
    14.eoln或eoln()(不區(qū)分大小寫字母)
    15.p↑(不區(qū)分大小寫字母)
    三.改錯題(每題4分,共20分)
    注:①錯誤原因說明除這里給出的外,可為其他等同含義的描述。
     ②錯誤位置指明除這里標明的外,可視具體程序靈活考慮。
    評卷時要根據(jù)以上兩面三刀點恰當評分。
    1.錯誤位置:PROGRAM calcA(input,output);
     VAR a,b: INTEGER;
     multi,div: REAL;
     (1)
     BEGIN
     readln(a,b);
     multi=a*b; div=a/b;
     writeln(a:4,b:4,multi:8:2,div:8:2)
     END.
     錯誤說明:(1)div為(系統(tǒng))保留字,不能用作變量名。
     (2)賦值語句的賦值號應為“:=”,不是“=”。
    評分標準:指出錯誤位置每處及錯誤原因說明每個各1分。
    2.錯誤位置:PROGRAM findmin (input,output);
     VAR x,y,z,min: INTEGER;
     BEGIN
     readln(x,y,z);
    (1) (2) If x(1) (2) If y(1) (2) If z writeln(x:4,y:4,z:4);
     writeln('MINIMUM IS',min:4)
     END.
    錯誤說明:(1)各個關系式中的小于號(<)應該為小于等于號(<=)否則,對于相等的特殊情形將找不出最小數(shù)。
     (2)THENIF應改為 THEN IF。
    評分標準:指出錯誤位置每種及錯誤原因說明每個各1分。
    *其他形式的正確程序段參考:
    形式一 IF x<=y THEN IF x<=z THEN min:=x;
     IF y<=x THEN IF y<=z THEN min:=y;
     IF z<=x THEN IF z<=y THEN min:=z;
    形式二 IF x THEN IFx<=z
     THEN min:=x
     ELSE min:=z
     ELSE IF y<=z
     THEN min:=y
     ELSE min:=z;
    3.錯誤位置:PROGRAM prime2(input,output);
     VAR i,n: INTEGER;
     isprime:BOOLEAN;
     BEGIN
     (1)→readln(n);
     FOR i:=2TO trune(squr(n))DO
     IF n MOD i=0
     THEN isprime:=FALSE
     (2)→ENDDO;
     IF isprime
     THEN writeln(n,'is a prime!')
     ELSE writeln(n,'is not a prime!')
     END.
    錯誤說明:(1)循環(huán)語句之前缺少對變量isprime賦初值的語句:isprime:=TRUE;
     (2)ENDDO應劃去(為非法、多余成分)。
    評分標準:指出錯誤位置每種及錯誤原因說明每個各1分。
    4.錯誤位置: PROGRAM calc(input,output);
     CONST test=200.88;
     VAR a,b: REAL;
     PROCEDURE random(VAR r,rnd:INTEGER);
     BEGIN
     random(400+test,a);(1)(2)
     random(400-test,b);(1)(2)
     writeln(‘a(chǎn)=',a,'b=',b);
     END
    錯誤說明:(1)賦值不相容(形參為整型,實參為實型)。
     (2)形參為變量參數(shù)時實參不能為表達式。
    評分標準:指出錯誤位置每種及錯誤原因說明每個各1分。
    5.錯誤位置:PROGRAM copyarray2(input,output);
     VAR a,b: ARRAY[10..1]OF INTEGER;
     (1)
     BEGIN
     Readln(a); (2)
     b:=a;
     write(b); (2)
     END.
    錯誤說明;(1)數(shù)組下標的上下界必須符合下界<上界。
     (2)數(shù)值型數(shù)組變量不能作為輸入、輸出語句參數(shù)。或說:“數(shù)值型數(shù)組不能直接整體輸入、輸出?!?BR>    評分標準;錯誤(1)指出位置及說明各1分。
     錯誤(2)指出位置每處0.5分,說明1分。
    四.閱讀程序(第1、2、題各4分,第3、4題各5分,第5題7分,共25分)
    1.11
    2.5(2分) -5(2分)
    3.5 2 7
    2.7 (每個數(shù)字各1分)
    1.head→(4)()→(2)()→(4)()→(6)()→(8)(nil)
    (各結點值的順序及值正確,每一結點1分,共5分)
    2.3 5 7 11 13 17
    每個數(shù)字各1分
    五.編程題(第1、2、題各4分,第3題10分,第4、5題各6分,共30分)
    1.①100 to 999(1分)
     ②i div 100;(1分)
     ③(a=b)and (a< >c)or(a=c)and(a< >b)or(b=c)and(a< >b)(2分)
    2. ①n>0(或n< >0)(1分)
     ②n:=n div 10 (或 n:=trunc(n/10));(1分)
     ③inverse:=t(1分)
     ④inverse(n)(1分)
    3. ①w:=b[i](1分)
     ②1 to 5(1分)
     ③a[j]:=w mod 10(或a[b-j]:=w mod 10)(1分)
     ④s:=s+a[j](1分)
     ⑤writeln(‘',s)(1分)
    4. ①file of integer;(1分)
     ②eof(f1)\ 可交換次序(1分)
     ③eof(f2)/ (1分)
     ④num1< >num2(1分)
     ⑤eof(f1)\可交換次序(1分)
     ⑥eof(f2)/(1分)
    5.①p∧.next< >nil(1分)
     ②j+1(1分)
     ③find:=p(1分)