2003計(jì)算機(jī)等級(jí)考試二級(jí)上機(jī)最新指南

字號(hào):

    
    二級(jí)五種語(yǔ)言上機(jī)環(huán)境
     軟件環(huán)境
     操作系統(tǒng):MS-DOS5.0以上
     漢字系統(tǒng):希望漢字系統(tǒng)(UCDOS)3.1 或5.0
     全屏幕編輯系統(tǒng):EDIT、PE2、QEDIT
    BASIC語(yǔ)言:QBASIC或Turbo-Basic或Quick-BASIC
    FORTRAN語(yǔ)言:Fortran77
    PASCAL語(yǔ)言 :Turbo-Pascal5.0以上
    C 語(yǔ)言: Turbo-C2.0以上
    FoxBASE語(yǔ)言:FoxBase2.1(中文版)
    考試內(nèi)容
    二級(jí)考試的上機(jī)內(nèi)容由DOS命令操作、程序修改及程序設(shè)計(jì)三部分組成。
    二級(jí)考試上機(jī)考試的時(shí)間為60分鐘,其內(nèi)容如下:
    1、操作系統(tǒng)部分30分,6條DOS操作命令題目。
    2、程序修改部分30分,修改指定程序MODI.PRG中的三個(gè)或三類(lèi)錯(cuò)誤。
    3、程序設(shè)計(jì)部分40分,根據(jù)題目要求編制PROGI.PRG程序。
    上述三部分中,操作系統(tǒng)部分與一級(jí)考試相同,比較容易,考生一般不會(huì)在這部分出現(xiàn)差錯(cuò),其他兩部分內(nèi)容相對(duì)較難,考生應(yīng)仔細(xì)閱讀題目要求。
    二級(jí)上機(jī)試題分析
    1、DOS 命令操作題
    (1)將考生目錄下的TCYCX\TSR目錄中的MOVE子目錄刪除。
    (2)將考生目錄下APPLE\CUABC子目錄中的文件README.DOC更名為README.TXT。
    (3)將考生目錄下L\M子目錄中的文件A1.BAT刪除。
    (4)在考生目錄下UNIX\GROUP子目錄中建立一個(gè)新的子目錄L。
    (5)取消考生目錄下P\P子目錄中文件PERSON.PAS的隱含屬性。
    (6)將考生目錄下SAVE子目錄中的文件HEAD.TXT和考生目錄下CHECK子目錄中的文件SEARCH.DAT順序合并拷貝到考生目錄下的PCS子目錄中, 文件名為BASE.OUT。
    參考答案:
    1、deltree tcycx\tsr\move
    2、ren apple\cuabc\readme.doc readme.txt
    3、del l\m\a1.bat
    4、md unix\group\l
    5、attrib–h p\p\person.pas
    6、copy save\head.txt+check\search.dat pcs\base.out
    分析:使用DOS命令一方面要清楚命令的名字,另一方面要清楚路徑,操作時(shí)盡量使用相對(duì)路徑,可節(jié)省時(shí)間。
    2、程序修改題 要求修改給定程序中的錯(cuò)誤,錯(cuò)誤均出現(xiàn)在星號(hào)行的下一行。每題后均附有正確答案。
    C語(yǔ)言部分:
    試題說(shuō)明:給定程序MODI1.C中函數(shù) fun 的功能是:將s所指字符串的正序和反序進(jìn)行連接,形成一個(gè)新串放在t所指的數(shù)組中。
    例如,當(dāng)s串為“ABCD”時(shí),則t串中的內(nèi)容應(yīng)為“ABCDDCBA”。請(qǐng)改正函數(shù)fun中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
    程序:
    #include
    #include
    #include
    /*******found1********/
    void fun (char s, char t)
    { int i, d;
    d = strlen(s);
    for (i = 0; i    for (i = 0; i   /*********found2*********/
    t[2*d-1] = '\0'; }
    main()
    {  char s[100], t[100];
    clrscr();
    printf(″\nPlease enter string S:″); scanf(″%s″, s);
    fun(s, t);
    printf(″\nThe result is: %s\n″, t); }
    答案:
    第一處改為:void fun (char *s, char *t)或fun (char *s, char *t)或void fun(char s[],char t[])或void fun(char *s, char t[])或void fun(char s[], char *t)或fun(char s[], char t[])或fun(char *s, char t[])或fun(char s[], char *t)
    第二處改為:t[2*d] = '\0'或t[2*d] = 0 或t[d*2] = '\0'或t[d*2] = 0或 t[d*2] = '\0'或t[d*2] = 0或t[d+d] = '\0'或t[d+d] = 0。
    分析:指針和數(shù)組有密不可分的關(guān)系,數(shù)組作為實(shí)參時(shí),形參即可以是數(shù)組也可以是指針,所以第一處的答案有多種選擇。'\0'或'\000'是代表ASCII碼為0的控制字符,所以t[2*d] = '\0'和t[2*d] = 0有同樣的效果。
    FoxBASE語(yǔ)言部分:
    試題說(shuō)明:給定程序MODII.PRG的功能是:實(shí)現(xiàn)四則運(yùn)算。程序中共有三個(gè)錯(cuò)誤,請(qǐng)調(diào)試修改正確,但不得增加或刪減。
    Set talk off
    Store 0 to c
    Do while .t.
    Clear
    @5,20
    input“輸入第一個(gè)數(shù):”to A
    input “輸入第一個(gè)數(shù):” to B
    accept “請(qǐng)輸入運(yùn)算符:”to OP
    do case
    case OP= “+”
     store A+B to C
    case OP= “-”
     store A-B to C
    case OP= “*”
     store A*B to C
    case OP= “/”
     store A/B to C
     otherwise
      @7,20 say “運(yùn)算符錯(cuò),重新輸入”
    *********found1*********
    exit
     endcase
    *********found2*********
    store “A&OPB=” to exp
    ? exp+str(c)
    @20,30 say “是否繼續(xù)?(y/n)”
    wait “” to go_on
    if upper(go_on)= “Y”
    clear
    else
    **********found3*********
    loop
    endif
     enddo
    clear
    @10,30 say“再見(jiàn)!”
    set talk on
    答案:第一處改為:loop;第二處改為:store “A&OP.B=” to exp;第三處改為:exit
    分析:本程序只能做兩個(gè)數(shù)的加減乘除運(yùn)算,第一個(gè)數(shù)存入變量A,第二個(gè)數(shù)存入變量B,運(yùn)算符存入變量C,然后通過(guò)多分支結(jié)構(gòu)DO CASE 語(yǔ)句判斷作何種運(yùn)算,運(yùn)算結(jié)果存入C中,最后輸出運(yùn)算結(jié)果,讓用戶(hù)選擇是否進(jìn)行下一次運(yùn)算。Loop和exit可在DO WHILE 和ENDDO之間的任何位置,loop表示進(jìn)行下一次循環(huán),直接跳到DO WHILE進(jìn)行條件判斷,loop后的命令不被執(zhí)行,exit表示直接從循環(huán)體跳出,去執(zhí)行ENDDO后面的命令。&是宏代換函數(shù),它的作用范圍是從符號(hào)&起直到遇見(jiàn)一個(gè)空格或圓點(diǎn)為止,若這樣使用“A&OPB=”,它會(huì)把OPB=當(dāng)成一個(gè)變量名進(jìn)行宏代換,所以會(huì)產(chǎn)生錯(cuò)誤。
    程序編制題
    C語(yǔ)言部分:
    說(shuō)明:C 程序設(shè)計(jì)為二級(jí) C 上機(jī)操作第三題,分值為 40 分,要求將給定的程序編制完全。
    試題說(shuō)明:函數(shù)fun的功能是將s所指字符串中下標(biāo)為奇數(shù)的字符刪除,s中剩余的字符形成一個(gè)新串放在t所指的數(shù)組中。
    例如,當(dāng)s所指字符串為“ABCDEFGHIJK”時(shí),t所指的數(shù)組的內(nèi)容應(yīng)是“ACEGIK”。注意: 部分源程序存在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
    程序 :
    #include 〈conio.h〉
    #include 〈stdio.h〉
    #include 〈string.h〉
    void fun(char *s, char t[])
    { 
    }
    main()
    {
    char s[100], t[100];
    clrscr();
    printf("\nPlease enter string S:"); scanf("%s", s);
    fun(s, t);
    printf("\nThe result is: %s\n", t);
    NONO();
    }
    NONO( )
    {/* 本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。 */
    char s[100], t[100] ;
    FILE *rf, *wf ;
    int i ;
    rf = fopen("bc01.dat", "r") ;
    wf = fopen("bc01.out", "w") ;
    for(i = 0 ; i 〈 10 ; i++) {
     fscanf(rf, "%s", s) ;
     fun(s, t) ;
     fprintf(wf, "%s\n", t) ;
    }
    fclose(rf) ;
    fclose(wf) ;
    }
    參考答案:
     void fun(char *s, char t[])
    { int i =0,j=0;
      while(*(s+j)!=’\0’)
       { if (j %2= =0)
        t[i]=*s;i++;
       j++;
      }
      t[i]= ’\0’;
    }
    分析:實(shí)參s和t都是數(shù)組,形參s是指針變量,t是數(shù)組,調(diào)用fun函數(shù)后,形參s指向?qū)崊數(shù)組的起始位置,通過(guò)條件j %2= =0判斷數(shù)組的下標(biāo)是奇數(shù)還是偶數(shù),若為偶數(shù),將指針s所指的字符賦給數(shù)組t,以達(dá)到將字符串中下標(biāo)為奇數(shù)的字符刪除的目的。
    FoxBASE語(yǔ)言部分:
    試題說(shuō)明:已給定職工數(shù)據(jù)庫(kù)文件ZG.DBF(含有編號(hào),姓名,基本工資等字段),考試成績(jī)數(shù)據(jù)庫(kù)文件KS.DBF(含有編號(hào),姓名,考試成績(jī)等字段)。請(qǐng)編寫(xiě)程序PROG%.PRG,完成以下數(shù)據(jù)操作:
    1、通過(guò)ZG.DBF復(fù)制生成工資數(shù)據(jù)庫(kù)文件GZ.DBF,使其具有編號(hào)、姓名和基本工資三個(gè)字段數(shù)據(jù)。
    2、按考試成績(jī)對(duì)GZ.DBF中的工資字段數(shù)據(jù)進(jìn)行修改:凡考試成績(jī)80分以上者基本工資增加50元,70分到80分者增加30元,60分到69分者增加10元。
    參考答案:
    USE ZG
    COPY TO GZ FIELDS 編號(hào),姓名,基本工資
    SELECT 2
    USE KS
    INDEX ON 編號(hào) TO KSIDX
    USE KS INDEX KSIDX
    SELECT 1
    USE GZ
    SET RELATION TO 編號(hào) INTO B
    DO WHILE .NOT. EOF()
    DO CASE
    CASE B-〉考試成績(jī)〉80
     REPLACE 基本工資 WITH 基本工資+50
    CASE B-〉考試成績(jī)〉70 .AND. B-〉考試成績(jī)〈=80
     REPLACE 基本工資 WITH 基本工資+30
    CASE B-〉考試成績(jī)〉=60 .AND. B-〉考試成績(jī)〈=69
     REPLACE 基本工資 WITH 基本工資+10
    ENDCASE
    SKIP
    ENDDO
    LIST
    SET RELATION TO
    CLOSE DATABASE
    分析:第一題用COPY命令進(jìn)行復(fù)制即可。第二題中涉及到基本工資和考試成績(jī)這兩個(gè)字段,但這兩個(gè)字段分別屬于GZ和KS這兩個(gè)數(shù)據(jù)庫(kù),因此要想同時(shí)對(duì)這兩個(gè)字段操作,必須要使GZ和KS這兩個(gè)數(shù)據(jù)庫(kù)進(jìn)行關(guān)聯(lián),GZ和KS中有一個(gè)共同的字段編號(hào),可以作為這兩個(gè)數(shù)據(jù)庫(kù)的關(guān)聯(lián)字段。由于是對(duì)考試成績(jī)分段進(jìn)行增加工資,所以用條件分支結(jié)構(gòu)DO CASE能較好的實(shí)現(xiàn)。
    Qbasic語(yǔ)言部分:
    說(shuō)明:QBASIC 程序編制題是二級(jí) QBASIC 上機(jī)操作第三題,分值為 40 分,要求是按題目要求在出現(xiàn)方括號(hào)的地方填上適當(dāng)?shù)恼Z(yǔ)句,使之正確。
    試題說(shuō)明: 編制程序PROG1.BAS其功能是: 求 2*4*6*8*…*30 的值。請(qǐng)?jiān)凇?】、【2】及【3】三處將程序補(bǔ)充完整。
    程序
    t = 【1】
    FOR j = 2 TO 30 【2】
    t = t * 【3】
    NEXT j
    PRINT t
    END
    答案:第一處填:t=1  第二處填:STEP 2  第三處填:t=t*j
    分析:改程序要求連乘積的值,所以可用一個(gè)循環(huán)來(lái)實(shí)現(xiàn),變量t用于存放連乘積的值,它的初值應(yīng)為1,變量j用于提供從2到30之間的偶數(shù),跳出循環(huán)后,輸出變量t的值,即2*4*6*8*…*30 的值。(全文完)