計(jì)算機(jī)等級考試二級VFP習(xí)題及答案:第五章

字號:

計(jì)算機(jī)等級考試二級VFP習(xí)題及答案:第五章

    一、判斷題:
    123456789101112
    ×√×√√×√√√√×√
    二、單選題:
    12345678910
    DCDCCABBBA
    三、程序控制結(jié)構(gòu)
    根據(jù)題目要求,編寫相應(yīng)的程序。
    參考答案:
    1、求出下列表達(dá)式的值(x、y的值從鍵盤輸入):
    程序代碼:
    SET TALK Off
    CLEAR
    INPUT "X=" TO X
    INPUT "Y=" TO Y
    Z=(X*Y+EXP(X+Y))/((X/Y)^3*LOG10(ABS(X-Y)))
    ?"X=",X,"Y=",Y,"Z=",Z
    SET TALK ON
    2、給定一個(gè)年份(從鍵盤輸入),判斷它是否閏年。閏年的條件是:能被4整除但不能被100整除,或能被100整除且能被400整除。
    程序代碼:
    SET TALK Off
    CLEAR
    INPUT "Year=" TO Year
    if (year%4=0 and year%100!=0) or (year%100=0 and year%400=0)
    ?year,"是閏年"
    else
    ?year,"不是閏年"
    endif
    SET TALK ON
    3、從鍵盤輸入數(shù)據(jù)A(可以是C、D、N、L、Y和U型等),通過類型判斷,輸出其數(shù)據(jù)類型的漢字說明(如A的值為“OK!”,那么輸出應(yīng)為:OK!——字符型數(shù)據(jù))。
    程序代碼:
    SET TALK Off
    CLEAR
    INPUT "A=" TO a
    do case
    case type('a')="C"
    ?a,"——字符型數(shù)據(jù)"
    case type('a')="D"
    ?a,"——日期型數(shù)據(jù)"
    case type('a')="N"
    ?a,"——數(shù)值型數(shù)據(jù)"
    case type('a')="L"
    ?a,"——邏輯型數(shù)據(jù)"
    case type('a')="Y"
    ?a,"——貨幣型數(shù)據(jù)"
    case type('a')="U"
    ?a,"——未定義"
    endcase
    SET TALK ON
    4、從鍵盤輸入A、B、C三個(gè)數(shù)值,將它們從小到大排列后輸出。
    程序代碼:
    SET TALK Off
    CLEAR
    INPUT "A=" TO A
    INPUT "B=" TO B
    INPUT "C=" TO C
    if b
    d=a
    a=b
    b=d
    endif
    if c
    d=a
    a=c
    c=d
    endif
    if c
    d=b
    b=c
    c=d
    endif
    ?a,b,c
    SET TALK ON
    5、從鍵盤輸入一個(gè)數(shù)值(0~9),要求輸出其對應(yīng)的中文大寫數(shù)字(零~玖)。
    程序代碼:
    SET TALK Off
    CLEAR
    C="零壹貳叁肆伍陸柒捌玖"
    INPUT "N=" TO N
    ?N,"--->"+SUBSTR(C,2*N+1,2)
    SET TALK ON
    6、將前面的1到5題,加上循環(huán),使之被調(diào)用執(zhí)行一次,并可以重復(fù)對不同的輸入值完成相同的操作。
    提示:只要在需要重復(fù)執(zhí)行的語句序列外加上循環(huán)控制結(jié)構(gòu)即可。下面以第2小題循環(huán)3次,第5小題循環(huán)任意次為例說明。
    (6.2)循環(huán)3次
    程序代碼:
    SET TALK Off
    CLEAR
    FOR I=1 TO 3
    INPUT "Year=" TO Year
    if (year%4=0 and year%100!=0) or (year%100=0 and year%400=0)
    ?year,"是閏年"
    else
    ?year,"不是閏年"
    endif
    ENDFOR
    SET TALK ON
    (6.5)循環(huán)任意次
    程序代碼:
    SET TALK Off
    CLEAR
    ?"PRESS ESC TO EXIT---"
    C="零壹貳叁肆伍陸柒捌玖"
    DO WHILE .T.
    INPUT "N=" TO N
    ?N,"--->"+SUBSTR(C,2*N+1,2)
    IF INKEY(0)=27
    EXIT
    ENDIF
    ENDDO
    SET TALK ON
    四、程序閱讀題。閱讀下列程序,寫出運(yùn)行結(jié)果。
    1、注:字符"A"的ASCII碼為65。
    程序代碼:
    SET TALK OFF
    CLEAR
    C="一二三四五六七八九十"
    B="ABCD"
    R=0
    L=LEN(B)
    FOR I=1 TO L
    W=SUBSTR(B,I,1)
    D=ASC(W)+R-65
    S=""
    IF D<10
    S=SUBSTR(C,2*D+1,2)
    ELSE
    S=SUBSTR(C,2*MOD(D,10)+1,2)
    ENDIF
    ?W+"----->"+S
    R=R+11
    ENDFOR
    SET TALK ON
    參考答案:
    A---->一
    B---->三
    C---->五
    D---->七
    2、設(shè)A的值為:ABCDEF
    程序代碼:
    SET TALK OFF
    CLEAR
    ACCEPT "A=" TO A
    L=LEN(A)
    P=SPACE(0)
    I=1
    DO WHILE I
    P=P+SUBSTR(A,L-I,2)
    I=I+2
    ENDDO
    ?A+"------>"+P
    SET TALK ON
    參考答案:
    ABCDEF------>EFCDAB
    3、寫出運(yùn)行結(jié)果
    程序代碼:
    SET TALK OFF
    M=3
    DO WHILE M<10
    N=2
    DO WHILE N
    IF INT(M/N)=M/N
    EXIT
    ENDIF
    N=N+1
    ENDDO
    IF N=M
    ?M
    ENDIF
    M=M+1
    ENDDO
    SET TALK ON
    參考答案:
     3
     5
     7
    4、寫出運(yùn)行結(jié)果
    程序代碼:
    SET TALK OFF
    CLEAR
    INPUT "M=" TO M
    IF INT(M)!=M OR ABS(M)!=M
    ?"輸入的數(shù)值不符合題目要求!"
    LOOP
    ENDIF
    ?ALLTRIM(STR(M,19))+"的質(zhì)數(shù)因子有:"
    I=2
    DO WHILE I<=M
    IF M%I=0
    ??STR(I,6)
    M=INT(M/I)
    LOOP
    ENDIF
    I=I+1
    ENDDO
    SET TALK ON
    SET ESCAPE ON
    設(shè):M的輸入值為12。
    參考答案:
    12的質(zhì)數(shù)因子有: 2 2 3
    5、寫出運(yùn)行結(jié)果
    程序代碼:
    SET TALK OFF
    CLEAR
    ?"* 1 2 3 4 5"
    A=1
    DO WHILE A<=5
    ?ALLTRIM(STR(A))+SPAC(2)
    B=1
    DO WHILE B<=A
    S=A*B
    ??STR(S,2)+SPAC(2)
    B=B+1
    ENDDO
    A=A+1
    ENDDO
    SET TALK ON
    參考答案:
    * 1 2 3 4 5
    1 1
    2 2 4
    3 3 6 9
    4 4 8 12
    5 5 10 15 20 25
    6、寫出運(yùn)行結(jié)果
    程序代碼:
    SET TALK OFF
    CLEAR
    DIMENSION A(6,6)
    FOR I=1 TO 6
    FOR J=1 TO 6
    IF I<>J
    A(I,J)=0
    ELSE
    A(I,J)= -1
    ENDIF
    ENDFOR
    ENDFOR
    FOR I=1 TO 6
    ?
    FOR J=1 TO 6
    ??A(I,J)
    ENDFOR
    ENDFOR
    SET TALK ON
    參考答案:
    -1 0 0 0 0 0
    0 -1 0 0 0 0
    0 0 -1 0 0 0
    0 0 -1 0 0 0
    0 0 0 -1 0 0
    0 0 0 0 0 -1
    7、設(shè)N,M的值分別為6,8。
    程序代碼:
    SET TALK OFF
    CLEAR
    INPUT "N=" TO N
    INPUT "M=" TO M
    X=MAX(N,M)
    FOR I=X TO M*N
    IF MOD(I,M)=0 AND MOD(I,N)=0
    Y1=I
    EXIT
    ENDIF
    ENDFOR
    ?"Y1="+ALLTRIM(STR(Y1,19))+",Y2="+ALLTRIM(STR(M*N/Y1,19))
    SET TALK ON
    參考答案:
    Y1=24,Y2=2
    8、設(shè)N值為4,字符”A”的ASCII碼為65。
    程序代碼:
    SET TALK OFF
    CLEAR
    INPUT "N=" TO N
    FOR I=1 TO N
    ?SPACE(N-I+1)
    FOR J=1 TO 2*I-1
    ??CHR(ASC("A")+J-1)
    ENDFOR
    ENDFOR
    FOR P=N-1 TO 1 STEP -1
    ?SPACE(N-P+1)
    FOR K=1 TO 2*P-1
    ??CHR(ASC("A")+K-1)
    ENDFOR
    ENDFOR
    SET TALK ON
    參考答案:
    A
    ABC
    ABCDE
    ABCDEFG
    ABCDE
    ABC
    A
    五、綜合編程題。根據(jù)題目要求,編寫相應(yīng)的程序。
    1、求X+ X2 + X3 + X4 +¼+ Xn的值。N,X從鍵盤輸入。
    程序代碼:
    SET TALK OFF
    clear
    INPUT "X=" TO X
    INPUT "N=" TO N
    S=0
    I=1
    DO WHILE I<=N
    S=S+X^I
    I=I+1
    ENDDO
    ?"X+X^2+X^3+...+X^N=",S
    SET TALK ON
    2、求S=2/1+3/2+5/3+8/5+13/8+…..前20項(xiàng)之和。
    程序代碼:
    SET TALK OFF
    clear
    S=0
    N=1
    X=1
    Y=2
    DO WHILE N<=20
    S=S+Y/X
    T=X
    X=Y
    Y=Y+T
    N=N+1
    ENDDO
    ?"2/1+3/2+5/3+...+17711/10946=",S &&共有N=20項(xiàng)累加
    SET TALK ON
    3、從鍵盤輸入一個(gè)正整數(shù),判斷其所含5的個(gè)數(shù)。(如:輸入數(shù)值2345105,其中包含5的個(gè)數(shù)為2)
    程序代碼:
    SET TALK OFF
    clear
    INPUT "請輸入一個(gè)正整數(shù)X:" TO X
    S=0
    DO WHILE .T.
    N=MOD(X,10) &&第一次求X的個(gè)位數(shù)N,第二次求X的十位數(shù)N,…
    IF N=5
    S=S+1
    ENDIF
    X=INT(X/10)
    IF X=0
    EXIT
    ENDIF
    ENDDO
    ?"X中5的個(gè)數(shù)為:",S
    SET TALK ON
    4、從鍵盤輸入20個(gè)數(shù),去掉20個(gè)數(shù)中的值和最小值,然后求平均值。
    程序代碼:
    SET TALK OFF
    CLEAR
    S=0
    N=1
    STORE 0 TO MAX,MIN
    DO WHILE N<=20
    INPUT "B=" TO B
    S= S+B
    IF MAX
    MAX=B
    ENDIF
    IF MIN>B
    MIN=B
    ENDIF
    N=N+1
    ENDDO
    ?"AVERAGE="+ STR((S-MAX-MIN)/18,19,2)
    SET TALK ON
    5、求2~1000之間完數(shù)的個(gè)數(shù)。
    (完數(shù):一個(gè)數(shù)如果恰好等于它的因子之和,因子不包括本身且不能重復(fù)。如:6=1+2+3,8<>1+2+4,所以6是完數(shù),8不是完數(shù))
    程序代碼:
    SET TALK OFF
    CLEAR
    SN=0
    ?"2~1000之間的完數(shù)為:"
    FOR N=2 TO 1000
    M=N
    I=1
    S=0
    DO WHILE I
    IF INT(M/I)=M/I
    S=S+I
    ENDIF
    I=I+1
    ENDDO
    IF N=S
    SN=SN+1
    ??N
    ENDIF
    ENDFOR
    ?" 完數(shù)的個(gè)數(shù)為:",SN
    SET TALK ON
    6、本程序首先對矩陣按行讀入數(shù)據(jù),并將它轉(zhuǎn)置。
    程序代碼:
    SET TALK OFF
    INPUT 'N=' TO N
    DIME A(N,N)
    FOR I=1 TO N
    FOR J=1 TO N
    INPUT 'A('+STR(I,1)+','+STR(J,1)+')=' TO AI,J)
    ENDFOR
    ENDFOR
    FOR I=1 TO N
    FOR J=1 TO I
    T=A(I,J)
    A(I,J)=A(J,I)
    A(J,I)=T
    ENDFOR
    ENDFOR
    SET TALK ON
    7、從鍵盤任意輸入N個(gè)數(shù),去掉其中值和最小值,然后求平均值。
    程序代碼:
    SET TALK OFF
    CLEAR
    S=0
    INPUT "N=" TO N
    STORE N TO MAX,MIN
    FOR I=1 TO N
    INPUT "B=" TO B
    S=S+B
    IF MAX
    MAX=B
    ENDIF
    IF MIN>B
    MIN=B
    ENDIF
    ENDFOR
    ?"AVERAGE="+STR((S-MAX-MIN)/(N-2),19,2)
    SET TALK ON
    8、利用參數(shù)傳遞和過程文件,求(M!+N!)/(M-N)!
    程序代碼:
    SET TALK OFF
    CLEAR
    SET PROC TO 程序20
    INPUT "M=" TO M
    INPUT "N=" TO N
    STORE 0 TO SM,SN
    DO JC2 WITH M,SM
    DO JC2 WITH N,SN
    DO MC2 WITH M-N,N
    ?"表達(dá)式結(jié)果為S="+STR((SM+SN)/N,10,2)
    SET PROC TO
    SET TALK ON
    PROC JC2
    PARA X,Y
    I=1
    T=1
    DO WHILE I<=X
    T=T*I
    I=I+1
    ENDDO
    Y=T
    RETURN
    PROC MC2
    PARA Y,X
    I=1
    T=1
    DO WHILE I<=X
    T=T*Y
    I=I+1
    ENDDO
    X=T
    RETURN
    9、編程求1~1000之內(nèi)的同構(gòu)數(shù)。(同構(gòu)數(shù):若A是同構(gòu)數(shù),則A出現(xiàn)在A的平方數(shù)的右邊。如:5*5=25,5出現(xiàn)在25的右邊,3*3=9,3不出現(xiàn)在9的右邊,所以5是同構(gòu)數(shù),而3不是。)
    程序代碼:
    SET TALK OFF
    CLEAR
    FOR X=1 TO 1000
    P=X*X
    L=LEN(ALLTRIM(STR(X,19)))
    IF ALLTRIM(STR(X,19))=RIGHT(ALLTRIM(STR(P,19)),L)
    ??X
    ENDIF
    ENDFOR
    SET TALK ON
    10、本程序用于輸入一個(gè)表名,若表存在則打開,并顯示出其各個(gè)字段名。
    程序代碼:
    SET TALK OFF
    DO WHILE .T.
    ACCEPT '請輸入表名:' TO FNAME
    IF .NOT.FILE(FNAME)
    WAIT '此表不存在'
    ELSE
    USE &FNAME
    ZDSM=FCOUNT()
    ? '此表中的字段有:'+STR(ZDSM)+'個(gè)'
    FOR I=1 TO ZDSM
    ? STR(I)+' '
    ?? FIELD(I)
    ENDFOR
    ENDIF
    WAIT '是否繼續(xù)(Y/N)' TO YN
    IF UPPER(YN)='N'
    EXIT
    ENDIF
    ENDDO
    SET TALK ON