結構化程序設計
一、選擇題
1. WAIT命令用于讓用戶輸入一個______。
A)數(shù)字B)字符C)字符串D)以上都是
2. 在交互式輸入命令中,可以接受邏輯型數(shù)據(jù)的命令包括______。
A)INPUT和ACCEPTB)WAIT和INPUT
C)INPUT和@…GETD)INPUT和@…SAY
3. 執(zhí)行命令 ACCEPT"請輸入數(shù)據(jù): "TO XYZ 時,可以通過鍵盤輸入的內(nèi)容包括______。
A)字符串B)數(shù)值和字符串
C)數(shù)值,字符串和邏輯值D)數(shù)值,字符串,邏輯值和表達式
4. 執(zhí)行命令INPUT"請輸入數(shù)據(jù): "TO AAA時,如果要通過鍵盤輸入字符串,應當使用的定界符包括______。
A)單引號B)單引號或雙引號
C)單引號、雙引號或方括弧D)單引號、雙引號、方括弧或圓點
5. 在VFP中,可以通過鍵盤接受數(shù)值的命令有_______。
A)ACCEPTB)ACCEPT和WAIT
C)INPUT和ACCEPTD)INPUT和 @ 5,10 SAY...GET..
6. 比較WAIT、ACCEPT和INPUT三條命令,需要以回車鍵表示輸入結束的命令是_____。
A)WAIT、ACCEPT、INPUTB)WAIT、ACCEPT
C)ACCEPT、INPUTD)INPUT、WAIT
7. 以下關于ACCEPT命令的說明,正確的是______。
A)將輸入作為字符接收B)將輸入作為數(shù)值接收
C)將輸入作為邏輯型數(shù)據(jù)接收D)將輸入作為備注型接收
8. 結構化程序設計所規(guī)定的三種基本控制結構是_______。
A)輸入,處理,輸出B)樹型,網(wǎng)型,環(huán)型
C)順序,選擇,循環(huán)D)主程序,子程序,函數(shù)
9. 能將高級語言編寫的源程序轉換成目標程序的是_______。
A)編程程序B)編譯程序C)解釋程序D)鏈接程序
10. VFP中的DO CASE-ENDCASE語句屬于_______。
A)順序結構B)選擇結構C)循環(huán)結構D)模塊結構
11. 當前數(shù)據(jù)庫中有五個字段:學號(C,4)、姓名(C,6)、政治(N,3.0)、英語(N,3.0)、數(shù)學(N,3.0),記錄指針指向一個非空的記錄。要使用SCATTER TO X命令把當前記錄的字段值存到數(shù)組X中,數(shù)組X ______。
A)不必事先定義
B)必須用DIMENSION X 事先定義
C)必須用DIMENSION X(5)事先定義
D)必須用DIMENSION X(1),X(2),X(3),X(4),X(5)事先定義
12. 要判斷數(shù)值型變量Y是否能夠被7整除,錯誤的條件表達式為______。
A)MOD(Y,7)=0B)INT(Y/7)=Y/7
C)0=MOD(Y,7)D)INT(Y/7)=MOD(Y,7)
13. 在VFP中,命令文件的擴展名是______。
A)TXTB)PRGC)DBTD)FMT
14. 以下有關VFP中過程文件的敘述,其中正確的是______。
A)先用SET PROCEDURE TO命令關閉原來已打開的過程文件,然后用DO <過程名>執(zhí)行
B)可直接用DO <過程名>執(zhí)行
C)先用SET PROCEDURE TO<過程文件名>命令打開過程文件,然后用USE<過程名>執(zhí)行
D)先用SET PROCEDURE TO <過程文件名>命令打開過程文件,然后用DO <過程名>執(zhí)行
15. 執(zhí)行 SET DEVICE TO PRINT命令之后,能在打印機上實現(xiàn)輸出的命令是______。
A)?姓名B)@ 10,10 SAY 姓名
C)LIST 姓名D)@ 10,10 GET 姓名
16. 一個過程文件最多可以包含128個過程,每個過程的第一條語句是______。
A)PARAMETERB)DO <過程名>C) <過程名>D)PROCEDURE <過程名>
17. 在下列命令組合中,不能配對使用的是______。
A)@ PROMPT 和 MENU TOB)DO WITH和 PARAMETERS
C)IF和 ENDIFD)DO CASE和 ENDDO
18. 在VFP中,用于建立或修改過程文件的命令是_______。
A)MODIFY <文件名>B)MODIFY COMMAND <文件名>
C)MODIFY PROCEDURE <文件名>D)CREATE COMMAND <文件名>
19. 在VFP中,可以在同種類型的數(shù)據(jù)之間進行“-”(減號)運算的數(shù)據(jù)類型是______。
A)數(shù)值型、字符型、邏輯型B)數(shù)值型、字符型、日期型
C)數(shù)值型、日期型、邏輯型D)邏輯型、字符型、日期型
20. 要在屏幕的第二行第二列開始顯示姓名(C,8),存款數(shù)額(N,6,2)和存入日期(D)三個字段的值,應該使用命令______。
A)@ 2,2 SAY 姓名,存款數(shù)額,存入日期
B)@ 2,2 SAY 姓名+存款數(shù)額+存入日期
C)@ 2,2 SAY 姓名+STR(存款數(shù)額,6,2)+DTOC(存入日期)
D)@ 2,2 SAY 姓名+STR(存款數(shù)額,6,2)+CTOD(存入日期)
21. 在DO WHILE/ENDDO循環(huán)中,若循環(huán)條件設置為.T.,則下列說法中正確的是______。
A)程序無法跳出循環(huán)B)程序不會出現(xiàn)死循環(huán)
C)用EXIT可以跳出循環(huán)D)用LOOP可以跳出循環(huán)
22. 用戶自定義函數(shù)或過程中接受參數(shù),應使用______命令。
A) PROCEDUREB) FUNCTIONC)WHILED)PARAMETERS
23. 用戶自定義函數(shù)或過程可以定義在______。
A)獨立的程序文件B)對象的事件代碼、方法代碼中
C)數(shù)據(jù)庫的存儲過程中D)過程文件
24. 在命令窗口賦值的變量默認的作用域是______。
A)全局B)局部C)私有D)不一定
25. 使用命令DECLARE mm(2,3)定義的數(shù)組,包含的數(shù)組元素(下標變量)的個數(shù)為______。
A)2個B)3個C)5個D)6個
26. 下列______語句可以將變量A、B的值互換。
A)A=BB)A= (A+B)/2C)A=A+BD)A=C
B=A B= (A-B)/2 B=A-B C=B
A=A-B B=C
27. 結構化程序設計的三種基本邏輯結構是______。
A)選擇結構、循環(huán)結構和嵌套結構
B)順序結構、選擇結構和循環(huán)結構
C)選擇結構、循環(huán)結構和模塊結構
D)順序結構、遞歸結構和循環(huán)結構
28. 如果一個過程不包含RETURN語句,或RETURN語句中沒有指定表達式,那么該過程_____。
A)沒有返回值B)返回0C)返回.T.D)返回.F.
29. 作為整個應用程序入口點的主程序至少應具有以下功能_____。
A)初始化環(huán)境
B)初始化環(huán)境、顯示初始的用戶界面、控制事件循環(huán),退出時恢復環(huán)境
C)初始化環(huán)境、顯示初始用戶界面
D)初始化環(huán)境、顯示初始用戶界面、控制事件循環(huán)
30. 下面關于過程調(diào)用的陳述中,______是正確的。
A)實參與形參的數(shù)量必須相等
B)當實參的數(shù)量多于形參的數(shù)量時,出現(xiàn)運行時錯誤。
C)當形參的數(shù)量多于實參的數(shù)量時,多余的實參為邏輯假
D)上面B和C都對
31. 將內(nèi)存變量定義為全局變量的Visual FoxPro命令是______。
A)LOCALB)PRIVATEC)PUBLICD)GLOBAL
32. 下列說法中正確的是______。
A)若函數(shù)不帶參數(shù),則調(diào)用時函數(shù)名后面的圓括號可以省略
B)函數(shù)若有多個參數(shù),則參數(shù)名間應用空格隔開
C)調(diào)用函數(shù)時,參數(shù)的類型、個數(shù)和順序不一定要一致
D)調(diào)用函數(shù)時,函數(shù)名后的圓括號不論有無參數(shù)都不能省略
33. 在VFP中,已經(jīng)建立了一個過程文件ABC.PRG,打開此過程文件的命令是______。
A) OPEN PROCEDURE TO ABCB) DO PROCEDURE ABC
C) SET PROCEDURE TO ABCD) RUN PROCEDURE ABC
34. 順序鍵入以下命令:
STORE "21.47" TO A
B=INT(&A+4)
? B
屏幕上顯示的結果為______。
A)24B)25C)25.47D)21.474
35. 設數(shù)據(jù)庫文件STD.DBF中包含8個字段,并有以下命令序列:
DIMENSION DATA(10)
USE STD
SCATTER TO DATA
? DATA(10)
執(zhí)行以上命令序列后,屏幕顯示的結果是______。
A)空B).T.C).F.D)0
36. 有以下命令序列:
STORE 123.456 TO A
STORE STR(A+A,5) TO B
? LEN(B),B
執(zhí)行以上命令序列,最后一條命令顯示的結果是______。
A)3 123B)3 264C)5 246D)5 247
37. 給出以下程序的運行結果:
SET TALK OFF
X=0
Y=0
DO WHILE X<100
X=X+1
IF INT(X/2)=X/2
LOOP
ELSE
Y=Y+X
ENDIF
ENDDO
? "Y=",Y
RETURN
運行結果為______。
A) Y=500B) Y=1500C) Y=2000D) Y=2500
38. 有如下兩個程序段:
*****程序段 1**********程序段 2*****
USE CLASSUSE CLASS
LOCATE FOR 政治面目="團員"LOCATE FOR 政治面目="團員"
DO WHILE FOUND()DO WHILE政治面目="團員"
DISPLAYDISPLAY
CONTINUESKIP
ENDDOENDDO
若在完全相同的環(huán)境下分別執(zhí)行上面的兩個程序段,則______。
A)程序段2輸出的記錄不可能比程序段1輸出的記錄多
B)程序段1輸出的記錄不可能比程序段2輸出的記錄多
C)程序段1和程序段2輸出的記錄一樣多
D)無法判定
39. 在使用@命令進行格式化輸入時,為了保證只輸入字母,應該在PICTURE短語中使用模式符______。
A)AB)XC)ND)Z
40. 有如下程序段:
DO CASE
CASE X>100
?? "1"
CASE X>200
?? "2"
OTHERWISE
?? "3"
ENDCASE
若在X=300的情況下執(zhí)行這個程序段,屏幕上將顯示______。
A)1B)2C)12D)3
41. 有如下命令序列:
X="A"
Y=X
A="黃河長江"
? X+&X-Y-&Y
執(zhí)行以上命令序列后,屏幕顯示表達式X+&X-Y-&Y的結果是______。
A)黃河長江B)A黃河長江A黃河長江
C)A黃河長江AD)A黃河長江黃河長江
42. 有如下命令序列:
SET DELETED ON
USE ABC
GO 3
DELETE NEXT 2
GO 4
RECALL
USE
執(zhí)行最后一條RECALL命令時,去掉刪除標記的記錄個數(shù)是______。
A)0B)1C)2D)3
43. 已知proc.prg程序清單如下:proc_1.prg程序清單如下:
SET TALK OFFPARAMETERS a,b
n=20 b=a*b
t=1 IF a<=2
DO proc_1 WITH n,t RETURN
?t ENDIF
SET TALK ON DO proc_1 WITH a-2,b
RETURN RETURN
程序proc.prg的功能是______。
A)輸出20以內(nèi)偶數(shù)的乘積B)輸出20以內(nèi)奇數(shù)的乘積
C)輸出結果為1D)輸出結果為0
44. 有如下命令序列:
SELECT 1
USE F1
SELECT 2
USE F2
SELECT 1
SET RELATION TO RECNO()-2 INTO B
GOTO 5
?RECNO(2)
最后一條命令的輸出結果是______。
A)5B)4C)3D)1
45. 清除屏幕從10行,17列到14行,52列的正確語句是______。
A)@10,17 TO CLEAR 14,52B)@10,17 CLEAR 14,52
C)@10,17 TO 14,52 CLEARD)CLEAR FROM @10,17 TO 14,52
46. 有如下命令序列
SELECT 1
USE FILE1
SELECT 2
USE FILE2
SELECT 3
USE FILE 3
執(zhí)行以上命令序列后,要想向FILE2.DBF中追加記錄,同時保持數(shù)據(jù)庫打開的狀態(tài)不變,應當使用命令______。
A) USE FILE2B) GO FILE2C) SELECT 2D) SELECT 4
APPEND APPEND APPEND USE FILE2
APPEND
47. 有如下命令
DISPLAY 姓名,出生日期 FOR 性別="女"
執(zhí)行這個命令后,屏幕顯示的是所有性別字段值為“女”的記錄,這時文件指針_____。
A)指向最后一個性別為"女"的記錄
B)指向最后一個性別為"女"的記錄的下一個記錄
C)指向文件尾
D)狀態(tài)視庫文件中數(shù)據(jù)記錄的實際情況而定
48. 有如下命令序列
CLEAR MEMORY
DIMENSION ARRAY(10)
LIST MEMORY
最后一條命令顯示定義的內(nèi)存變量的數(shù)是______。
A)10B)1C)0D)11
49. 在命令文件中,調(diào)用另一個命令文件用命令______。
A) CALL <命令文件名>B) LOAD <命令文件名>
C) PROCEDURE <命令文件名>D) DO <命令文件名>
50. 執(zhí)行下列語句序列
A=2200
DO CASE
CASE A<1000
B=5/100
CASE A>1000
B=10/100
CASE A>2000
B=15/1000
CASE A>3000
B=20/100
ENDCASE
變量B的值是______。
A)0.05B)0.10C)0.15D)0.20
51. 有以下程序段:
DO CASE
CASE 計算機<60
? "計算機成績是: "+"不及格"
CASE 計算機>=60
? "計算機成績是: "+"及格"
CASE 計算機>=70
? "計算機成績是: "+"中"
CASE 計算機>=80
?″計算機成績是:″+″良″
CASE 計算機>=90
? "計算機成績是: "+"優(yōu)"
ENDCASE
設學生數(shù)據(jù)庫當前記錄的“計算機”字段的值是89,執(zhí)行上面程序段之后,屏幕輸出______。
A)計算機成績是:不及格B)計算機成績是:及格
C)計算機成績是:良D)計算機成績是:優(yōu)
52. 執(zhí)行以下命令序列:
USE ZGGZ
SUM 工資 FOR 工資>=500 TO QWE
COPY TO QAZ FIELDS 職工號,姓名 FOR 工資>=500
USE QAZ
NUM=RECCOUNT()
AVER=QWE/NUM
? AVER
最后顯示的值是______。
A)所有工資在500元以上的職工人數(shù)
B)所有工資在500元以上的職工平均工資數(shù)
C)所有職工的平均工資數(shù)
D)出錯
53. 有以下程序段:
@5,10 SAY "請輸入1─4" GET ANS
READ
CX="PG"+ANS+".PRG"
DO &CX
其功能是根據(jù)用戶輸入的數(shù)字,轉去執(zhí)行子程序PG1、PG2、PG3、PG4之一。但該程序段有一個明顯的錯誤,為此應當做以下修改______。
A)增加STORE " " TO ANS 作為第一條命令
B)把@ 5,10 SAY "請輸入1─4" TO ANS 命令改為 ACCEPT " 請輸入1─4" TO ANS
C)把 CX="PG"+ANS+".PRG" 命令中的"+".PRG" 部分去掉
D)把DO &CX 命令的&去掉
54. 執(zhí)行如下程序
SET TALK OFF
S=0
I=1
INPUT "N=?" TO N
DO WHILE S<=N
S=S+I
I=I+1
ENDDO
? S
SET TALK ON
如果輸入N值為5,則最后S的顯示值是______。
A)1B)3C)5D)6
55. 某程序中有如下程序段:
STORE "" TO PT
@ 5,10 SAY "是否開始打印?(Y/N):"
@ 3,10 GET PT VALID PT $"YN" PICTURE"!"
READ
IF PT="Y"
DO PT.PRG && 打印 ENDIF 如果希望程序執(zhí)行后能夠實現(xiàn)打印輸出,則對于程序的提問______。
A)只能輸入 YB)只能輸入yC)輸入Y或yD)可以直接敲回車鍵
56. 執(zhí)行如下程序:
STORE "" TO ANS
DO WHILE .T.
CLEAR
@ 3,10 SAY "1.添加2.刪除 3.修改 4.退出"
@ 5,15 SAY "請輸入選擇:" GET ANS
READ
IF TYPE("ANS")="C".AND.VAL(ANS)<=3.AND.VAL(ANS)<>0
PROG= "PROG" +ANS+ ".PRG" DO & PROG
ENDIF
QUIT
ENDDO
如果在"請輸入選擇:"時,鍵入4,則系統(tǒng)______。
A)調(diào)用子程序PROG4.PRGB)調(diào)用子程序&PROG.PRG
C)返回FOXBASE提示狀態(tài)D)返回操作系統(tǒng)狀態(tài)
以下57~62題的操作均基于下面條件:
已建立學生數(shù)據(jù)庫STD.DBF,數(shù)據(jù)庫結構為:學號(C,6),姓名(C,8),性別(C,2),出生日期(D),平均成績(N,6,2)。用LIST命令顯示記錄如下:
記錄號#學號姓名性別出生日期平均成績
1021501劉淑敏女10/05/8488.2
2021502楊立宏男03/12/8570.6
3021503馬燕女09/23/8467.2
4021504趙雅潔女12/10/8480.8
5021505王力軍男11/21/8490.5
57. 依次執(zhí)行以下命令:
USE STD
姓名="鄭小洋"
SKIP 2
? "姓名是: "+姓名
最后一條命令的輸出結果是______。
A)姓名是:鄭小洋B)姓名是:馬燕
C)姓名是:楊立宏D)姓名是:趙雅潔
58. 使用INDEX ON 性別+DTOC(出生日期,1) TO RQ建立索引之后,接著執(zhí)行LIST命令,所顯示記錄的姓名順序是______。
A)王力軍、楊立宏、馬燕、劉淑敏、趙雅潔
B)馬燕、劉淑敏、趙雅潔、王力軍、楊立宏
C)楊立宏、王力軍、趙雅潔、劉淑敏、馬燕
D)劉淑敏、楊立宏、馬燕、趙雅潔、王力軍
59. 索引文件打開后,下列命令操作中不受索引文件影響的是______。
A) SKIPB) DISPLAY ALLC) FINDD) GO 5
60. 有如下程序段:
USE STD
INDEX ON 性別 TO XB
TOTAL ON性別 TO STD_1
執(zhí)行以上程序段之后,數(shù)據(jù)庫STD_1.DBF中的記錄個數(shù)為______。
A)1B)2C)3D)4
61. 上題所生成的數(shù)據(jù)庫STD_1.DBF中被匯總的字段是______。
A)記錄個數(shù)B)平均成績
C)平均成績、出生日期D)平均成績、出生日期、記錄個數(shù)
62. 要顯示當前記錄的學號,姓名,性別,以下命令錯誤的是______。
A) ? 學號,姓名,性別B) DISPLAY學號,姓名,性別
C) @ 5,10 SAY學號,姓名,性別D) @ 5,10 SAY學號+姓名+性別
二、填空題
1. PUBLIC用于定義______。在本次Visual FoxPro運行期間,所有過程都可以使用這些變量。
2. VFP根據(jù)表達式的______來確定表達式的類型。
3. 命題“n是小于正整數(shù)k的偶數(shù)”用邏輯表達式表示是______。
4. PRIVATE用于定義______,它用于定義當前過程的變量,并將以前過程定義的同名變量保存起來,在當前過程中使用該變量而不影響這些同名變量的原始值。
5. 有程序段如下:
STORE 0 TO X,Y
DO WHILE.T.
X=X+1
Y=Y+X
IF X>=100
EXIT
ENDIF
ENDDO
? "Y="+STR(Y,3)
這個程序是計算 [1] 的,執(zhí)行后的結果是 [2] 。
6. 請閱讀下列判斷一個自然數(shù)是否為質(zhì)數(shù)的程序,并將程序填寫完整。
SET TALK OFF
INPUT"請輸入一個大于1的自然數(shù): "TO N
K=0 &&K的值為0表示所輸入的自然數(shù)是質(zhì)數(shù),為1表示不是質(zhì)數(shù)
J=2
DO WHILE J<n
IF MOD(N,J) [1]
[2]
LOOP
ELSE
K=1
EXIT
ENDIF
ENDDO
IF K=0
? [3] +" 是質(zhì)數(shù)"
ENDIF
? "再見?。?quot;
SET TALK ON
RETURN
7. 下面的函數(shù)通過參數(shù)a、b、c接收一元二次方程ax2+bx+c=0的三個系數(shù),并求解這個方程:如果有實根,通過參數(shù)x1和x2返回它的兩個根,函數(shù)的返回值為.T.;如果沒有實根或出現(xiàn)其他異常情況,函數(shù)的返回值為.F.,請?zhí)羁铡?/span>
PARAMETERS a,b,c,x1,x2
IF a =0
RETURN .F.
ENDIF
Delta=b*b-4*a*c
IF delta<0
[1]
ENDIF
x1= [ 2]
x2=(-b-SQR(delta))/(2*a)
RETURN .T.
8. 有如下FoxBASE程序:
*SUB.PRG
PARAMETERS R,A
PI=3.14
A=PI*R*R
RETURN
在命令狀態(tài)下執(zhí)行了如下命令序列:
AREA=0
__________________
? AREA
最后一條命令執(zhí)行后顯示的結果是12.56,請?zhí)羁铡?/span>
9. 設數(shù)據(jù)庫文件PHONE.DBF中包含了“姓名”,“電話”和“地址”三個字符型字段。以下程序的功能是按用戶輸入的任一電話號碼進行查找,如果存在該號碼,則顯示其單位地址,關閉文件并結束程序。請將程序補充完整。
SET TALK OFF
USE PHONE
CLEAR
DO WHILE .T.
PHN=SPACE(8)
@ 10,20 SAY"電話號碼:" [1]
READ
LOCATE FOR PHN=電話
IF FOUND( )
@ 12,20 SAY"單位地址:"+ 地址
[2]
ENDIF
ENDDO
CLOSE ALL
SET TALK ON
RETURN
10. 在青年歌手大賽中,歌手的得分情況由GS.DBF和PW.DBF兩個數(shù)據(jù)庫(除“最后得分”字段以外,其余字段已存放了相應數(shù)據(jù))進行統(tǒng)計。
評委數(shù)據(jù)庫PW.DBF中放有10個評委給每位歌手所打的分數(shù),數(shù)據(jù)庫結構為:
歌手編號(C,4),評委1(N,5,2),評委2(N,5,2),…,評委10(N,5,2)
歌手數(shù)據(jù)庫GS.DBF中存有每位歌手的基本情況和最后得分,數(shù)據(jù)庫結構為:
歌手編號(C,4),姓名1(C,8),選送地區(qū)(C,20),最后得分(N,5,2)
1)以下程序的功能是根據(jù)10個評委所給分數(shù),計算并填寫“最后得分”字段,具體計算方法是去掉一個最高分,去掉一個最低分,再對其余得分求平均。請?zhí)羁眨?/span>
SELECT 0
USE GS
INDEX ON 歌手編號 TO GS
SELECT 0
USE PW
SET RELATION TO 歌手編號 INTO GS
GO TOP
DO WHILE [1]
SCATTER TO TEMP
I=2
STORE TEMP(2) TO PMIN, PMAX, S
DO WHILE [2]
I=I+1
S=S+TEMP(I)
DO CASE
CASE TEMP(I)>PMAX
PMAX= TEMP(I)
CASE TEMP(I)<pmin
PMIN= TEMP(I)
[3]
ENDDO
SELECT GS
REPLACE 最后得分 WITH [4]
[5]
[6]
ENDDO
2)將GS.DBF按“最后得分”字段由高到低排序,“最后得分”相同時,按歌手編號升序建立排序文件GSPX.DBF的命令是______。
3)計算GS.DBF中所有歌手“最后得分”的平均值,并將結果保存在變量PJ中的命令是______。
4)以下程序是根據(jù)GS.DBF中“選送地區(qū)”字段的前兩個漢字是否為“北京”而使用PROG1.PRG和PROG2.PRG進行不同的處理:
……
IF LEFT(選送地區(qū),4)="北京"
DO PROG1
ELSE
DO PROG2
ENDIF
……
以上程序段中的判斷條件LEFT(選送地區(qū),4)= "北京",也可以用函數(shù)SUBSTR或AT描述。使用SUB函數(shù)描述時,判斷條件可改寫為 [1] ;使用AT函數(shù)描述時,判斷條件可改寫為 [2] 。
11. 有如下售書數(shù)據(jù)庫BOOK.DBF,BOOK.DBF中的記錄如下:
書號單價數(shù)量總計
B0168 19.8 3
B6915 12.6 36
B9023 40.0 100
B4682 18.0 40
B6329 28.0 56
B8127 2.0 20
要逐條計算總計并填入“總計”字段之中,計算按照如下規(guī)則:
若數(shù)量小于等于10,總計等于“單價*數(shù)量”
若數(shù)量大于50, 總計等于“單價*數(shù)量*(1-5/100)”
若數(shù)量在11與50之間,總計等于“單價*數(shù)量(1-10/100)”
請?zhí)羁?/span>:
SET TALK OFF
USE BOOK
GO TOP
DO WHILE [1]
DO CASE
CASE 數(shù)量<=10
REPLACE 總計 WITH單價*數(shù)量
CASE [2]
REPLACE 總計 WITH 單價*數(shù)量*(1-10/100)
CASE 數(shù)量>50
REPLACE 總計 WITH 單價*數(shù)量*(1-5/100)
ENDCASE
[3]
ENDDO
LIST
USE
SET TALK ON
RETURN
12. 售書數(shù)據(jù)庫BOOK.DBF(如上題所示),現(xiàn)需要調(diào)整一些書的單價,然后用調(diào)整后的“單價*數(shù)量”的值填入“總計”字段,下邊程序的功能是根據(jù)用戶輸入的書號查找到記錄,并由用戶決定是否對該記錄進行修改,請?zhí)羁眨?/span>
SET TALK OFF
USE BOOK
INDEX ON 書號 TO BOOKI
DO WHILE .T.
CLEAR
DISP ALL FIELDS 書號
ACCEPT"請輸入書號" TO BNO
[1]
IF FOUND()
DISPLAY
ACCEPT"修改/不修改繼續(xù)/終止程序(Y/N/E) " TO SR
ELSE
ACCEPT"書號不存在!繼續(xù)/終止程序(N/E) " TO SR
ENDIF
DO CASE
CASE UPPER(SR)= "Y"
INPUT"請輸入新單價: " TO XDJ
REPLACE [2] ,總計 WITH 單價*數(shù)量
CASE UPPER(SR)= "N"
[3]
CASE UPPER(SR)= "E"
[4]
ENDCASE
ENDDO
USE
SET TALK ON
RETURN
13. 下面程序的功能是修改P2.DBF中記錄內(nèi)容,為了避免破壞數(shù)據(jù)庫數(shù)據(jù),先把記錄內(nèi)容存入數(shù)組BUFFER中,用戶先對數(shù)組進行修改,確定修改后,再把數(shù)組中的數(shù)據(jù)存入數(shù)據(jù)庫中,請?zhí)羁眨?/span>
SET TALK OFF
DIMENSION BUFFER(3)
STORE"Y"TO ANS, CON
USE P2
DO WHILE UPPER(CON)= "Y"
CLEAR
@ 2,5 SAY"修改第幾條記錄? "
[1]
GO RNO
SCATTER TO BUFFER
@ 4,10 SAY"學號"GET BUFFER(1)
@ 6,10 SAY"姓名"GET BUFFER(2)
@ 8,10 SAY"所屬系"GET BUFFER(3)
[2]
ACCEPT"確實修改記錄嗎?(Y/N) "TO ANS
IF UPPER(ANS)= "Y"
[3]
ENDIF
ACCEPT"繼續(xù)嗎?(Y/N) "TO CON
ENDDO
USE
SET TALK ON
RETURN
14. 設有Student.DBF(學號,姓名,民族)和score.DBF (學號,成績)兩個數(shù)據(jù)庫,要在它們之間建立邏輯連接,然后為每個少數(shù)民族考生的成績增加5分,最后顯示全體考生的學號、姓名和成績。請對如下程序填空:
SET TALK OFF
SELECT 1
USE student
[1] TO inx
SELECT 2
USE score
SET RELATION TO [2]
REPLACE 成績 WITH [3] FOR [4]
LIST 學號, [5] ,成績
SET RELATION TO
CLOSE DATA
SELECT 1
SET TALK OFF
RETURN
15. 下面是一個口令設置程序,請在其中填空,完成此程序。
SET TALK OFF
CLEAR
PASS= "ABCDEFG"
PASSWORD= ""
@ 10,20 SAY "請輸入口令:"
SET CONSOLE [1]
ACCEPT TO PASSWORD
SET CONSOLE [2]
IF PASSWORD<>PASS
? CHR(7)
WAIT"口令輸入錯誤!敲任何鍵退出。"
QUIT
ELSE
? "歡迎使用本系統(tǒng)!"
P=INKEY(3)
ENDIF
DO ZXT &&執(zhí)行相應程序。
RETURN