第一題:有計算機等級考試數據庫djks.dbf,包括:考號、姓名、性別、年齡和單位等字段;成績數據庫cj.dbf,包括:考號、考場編號、筆試成績和上機成績等字段。 請考生編寫程序 PROG1.PRG,其功能是其考號、單位、筆試成績和上機成績共四個字段。然后在生成的連接數據庫中按單位對筆試和上機成績進行分類匯總,存入數據庫qaz.dbf文件中。
參考答案:
SET TALK OFF
CLEAR
SELE B
USE CJ
SELE A
USE DJKS
JOIN WITH B TO CJ1 FOR 考號=B->考號 FIELD ?考號,單位,B->筆試成績,B->上機成績
SELE C
USE CJ1
SORT ON 單位 TO CJ2
USE CJ2
TOTAL ON 單位 TO QAZ
USE QAZ
LIST
CLOSE DATABASE
@ 10,30 SAY "再見!"
SET TALK ON
第二題:已有三個數據庫:⑴借閱數據庫jy.dbf,包括圖書編號、借書證號、借書日期和借出天數等字段; ⑵讀者數據庫dzh.dbf,包括借書證號、姓名、停借否等字段;⑶停借數據庫tj.dbf,包括借書證號、姓名等字段。 請考生編寫程序 PROG1.PRG,其功能是整理圖書借出情況:首先在借閱數據庫中用當前日期減去借書日期得出借出天數,然后進行判定處理,凡借書超過60天(不含60天)者,就把讀者數據庫中的停借否字段置為邏輯真,并在停借數據庫中產生一條記錄。(注意:假定當前日期為2000年9月1日)
參考答案:
SET TALK OFF
SET CENTURY ON
CLEAR
SELE C
USE TJ
SELE B
USE DZH
REPL ALL 停借否 WITH .F.
SELE A
USE JY
DO WHILE .NOT. EOF()
JSZ=借書證號
REPL 借出天數 WITH DATE()-借書日期
IF 借出天數>60
SELE B
LOCA FOR 借書證號=JSZ
REPL 停借否 WITH .T.
SCATTER TO TJF
SELE C
APPE BLANK
GATHER FROM TJF
SELE A
ENDIF
SKIP
ENDDO
SELE C
LIST
CLOSE ALL
CLEAR ALL
SET TALK ON
第三題:已有數據庫data.dbf,其中有data1--data7、最大數、最小數和平均數等字段。 請考生編寫程序PROG1.PRG,其功能是按記錄求出data1--data7七個數中的最大數、最小數和平均數,并記入數據庫的相應字段中,最后把結果輸出到data1.dbf文件中。
參考答案:
SET TALK OFF
CLEAR
USE DATA
DO WHILE .NOT. EOF()
AV_NUM=(DATA1+DATA2+DATA3+DATA4+DATA5+DATA6+DATA7)/7
MAX_NUM=MAX(DATA1,MAX(DATA2,MAX(DATA3,MAX(DATA4,MAX(DATA5,MAX(DATA6,DATA7))))))
MIN_NUM=MIN(DATA1,MIN(DATA2,MIN(DATA3,MIN(DATA4,MIN(DATA5,MIN(DATA6,DATA7))))))
REPL 最大數 WITH MAX_NUM,最小數 WITH MIN_NUM,平均數 WITH AV_NUM
SKIP
ENDDO
BROW
COPY TO DATA1
USE
SET TALK ON
第四題:已有數據庫djks.dbf。請編寫程序PROG1.PRG,在程序中首先通過復制djks.dbf生成一個具有考號、 姓名、筆試及上機四個字段的數據庫文件aaa.dbf(只有結構),然后再修改其結構,把考號字段改為數值型8個字符寬、姓名字段改為8個字符寬。要求必須使用: copy to <結構文件名> structure extended 和 create <生成庫文件名> from <結構文件名>命令實現,使用其它方法不得分
參考答案:
set talk off
clos data
use djks
copy stru to aaa fiel 考號,姓名,筆試,上機
USE AAA
COPY STRU TO BBB EXTENDED
USE BBB
LOCA FOR FIELD_NAME='考號'
REPL FIELD_TYPEWITH 'N',FIELD_LEN WITH 8
LOCA FOR FIELD_NAME='姓名'
REPL FIELD_LEN WITH 8
CREATE AAA FROM BBB
clos data
set talk on
第五題:已有數據庫stock.dbf,包括商品號、商品名、單價和數量等字段。請考生編寫程序PROG1.PRG,其功能是給該數據庫增加一個總額(N, 10.2)字段,并填入數據,其值為數量與單價之乘積,最后把結果復制到stock1.dbf文件中。
參考答案:
SET TALK OFF
CLOSE DATABASE
CLEAR
USE STOCK
COPY STRUCTURE TO STO EXTENDED
USE STO
APPEN BLANK
REPL FIELD_NAMEWITH "總金額",FIELD_TYPE WITH "N",FIELD_LEN ?WITH 10,FIELD_DEC WITH 2
CREATE STOCK1 FROM STO
USE STOCK1
APPE FROM STOCK
REPL ALL 總金額 WITH 數量*單價
LIST
USE
SET TALK ON
第六題:已有計算機等級考試數據庫djks.dbf,包括:考號、姓名、筆試成績、上機成績和平均成績等字段,但各成績字段為空;另有成績數據庫cj.dbf,包括:考號、考場編號、筆試成績和上機成績等字段,
考生的考試成績已錄入其中。 請編寫程序 PROG1.PRG,要求把考生的考試成績填寫到數據庫djks.dbf中,然后再計算筆試和上機成績的平均成績,填入各記錄的平均成績字段中。最后生成一個與djks.dbf結構完全相同的不及格數據庫bjg.dbf,把平均成績不及格的考生記錄移入不及格庫。
參考答案:
SET TALK OFF
SET DELETED OFF
CLEAR
SELE B
USE CJ
SELE A
USE DJKS
INDEX ON 考號 TO DJKS
UPDATE ON 考號 FROM B REPLACE 筆試成績 WITH B->筆試成績,上機成績 ?WITH B->上機成績 RANDOM
GO TOP
REPLACE ALL 平均成績 WITH (筆試成績+上機成績)/2
COPY TO BJG FOR 平均成績<60
LIST
USE BJG
LIST
CLOSE DATABASE
SET TALK ON
第七題:請考生編寫程序 PROG1.PRG,其功能是計算下列多值函數的值:
┌ABS(x) x<0
├ex 0<=x<1
y=├x2 1<=x<3
└INT(x) x>=3
計算的數據都存放在數據庫shj.dbf中,該數據庫只有兩個字段:X(N,4.1)和Y(N,6.4)。在程序中讀取字段X的數據,然后把計算結果存放在字段Y中, 最后把shj.dbf所有記錄復制到shj1.dbf文件中
參考答案:
SET TALK OFF
USE SHJ
do while .not. eof()
X1=X
DO CASE
CASE X1<0
Y1=ABS(X1)
CASE X1>=0 .AND. X<1
Y1=EXP(X1)
CASE X>=1 .AND. X<3
Y1=X1*X1
OTHERWISE
Y1=INT(X1)
ENDCASE
REPLACE Y WITH Y1
SKIP
enddo
LIST
COPY TO SHJ1
CLOSE DATABASE
SET TALK ON
第八題:請考生編寫程序 PROG1.PRG,其功能是計算數學公式:
S=1-1/3!+1/5!-1/7!+1/9!-1/11!+...-1/(2n-1)!n
值存放在數據庫shj.dbf中,該數據庫只有兩個字段:N(n,2.0)和S(n,17.15)。執行程序時到數據庫中逐個讀取N值,再把計算結果存放在S字段中, 最后把shj.dbf所有記錄復制到shj1.dbf文件中。
參考答案:
SET TALK OFF
USE SHJ
DO WHILE .NOT. EOF()
STORE N TO NJ2
NJ2=2*NJ2-1
JC=1
S1=0
NJ1=1
NJ3=1
DO WHILE NJ1<=NJ2
jc=jc*nj1
if mod(nj1,2)=1
IF MOD(NJ3,2)=1
S1=S1+(1/jc)
ELSE
S1=S1-(1/JC)
ENDIF
NJ3=NJ3+1
endif
NJ1=NJ1+1
ENDDO
REPLACE S WITH S1
SKIP
ENDDO
COPY TO SHJ1
CLOSE DATABASE
SET TALK ON
第九題:有計算機等級考試成績數據庫cj.dbf,包括考號、筆試成績和上機成績等字段,其中考號的前兩位是單位編碼;還有統計數據庫tj.dbf,包括單位編碼、筆試平均分、上機平均分、筆試最高分、上機最高分等字段。 請編寫程序 PROG1.PRG,其功能是:按單位進行各項統計,結果存于統計數據庫tj.dbf的相應字段中。
參考答案:
SET TALK OFF
SET SAFETY OFF
CLOSE DATABASE
CLEAR
SELE 2
USE TJ
ZAP
SELE 1
USE CJ
SORT ON 考號 TO CJ1
USE CJ1
DO WHILE .NOT. EOF()
STORE 0 TO BS1,SJ1,BSMAX,SJMAX
DWCODE=SUBSTR(考號,1,2)
N1=0
BSMAX=筆試成績
SJMAX=上機成績
DO WHILE 考號=DWCODE
IF 上機成績>SJMAX
SJMAX=上機成績
ENDIF
IF 筆試成績>BSMAX
BSMAX=筆試成績
ENDIF
BS1=BS1+筆試成績
SJ1=SJ1+上機成績
N1=N1+1
SKIP
ENDDO
SELE 2
APPEND BLANK
REPLACE 單位編碼WITH DWCODE,筆試平均分 WITHBS1/N1,上機平均分 WITH ;
SJ1/N1,筆試最高分 WITH BSMAX, 上機最高分 WITH SJMAX
SELE 1
ENDDO
SELE 2
LIST
CLOSE DATABASE
SET TALK ON
SET SAFETY ON
第十題:已有計算機等級考試數據庫djks.dbf,包括:考號、姓名、筆試成績、上機成績和平均成績等字段,其中考號的前兩位是單位代碼;另有單位數據庫dw.dbf,包括:單位代碼、單位名稱、人數和總平均分等字段。 請編寫程序 PROG1.PRG,要求先在djks.dbf數據庫中計算各位考生的平均成績,并填入平均成績字段中。然后按單位統計人數及總平均分,記入dw.dbf數據庫的相應字段中,最后把dw.dbf所有記錄復制到dw1.dbf文件中。
參考答案:
SET TALK OFF
SELE 2
USE DW
SELE 1
USE DJKS
DO WHILE .NOT. EOF()
REPLACE 平均成績 WITH (筆試成績+上機成績)/2
SKIP
ENDDO
SORT ON 考號 TO DJKS1
USE DJKS1
DO WHILE .NOT. EOF()
DW1=SUBSTR(考號,1,2)
STORE 0 TO PEOPLE,AV_SCOR
DO WHILE SUBSTR(考號,1,2)=DW1
AV_SCOR=AV_SCOR+平均成績
PEOPLE=PEOPLE+1
SKIP
ENDDO
SELE 2
LOCA FOR 單位代碼=DW1
REPL 人數 WITH PEOPLE,總平均分 WITH AV_SCOR/PEOPLE
SELE 1
ENDDO
SELE 2
COPY TO DW1
LIST
CLOSE DATABASE
SET TALK ON
·2009年計算機等考一級WPS上機考試指導(六) (2009-9-17 17:26:38)
·2009年計算機等考一級WPS上機考試指導(五) (2009-9-17 17:18:25)
·2009年計算機等考一級WPS上機考試指導(四) (2009-9-17 17:14:45)
·2009年計算機等考一級WPS上機考試指導(三) (2009-9-17 17:09:59)
·2009年計算機等考一級WPS上機考試指導(二) (2009-9-17 17:05:19)