一.單選題(36分 每小題1分)
1.在VISUAL FOXPRO常用的基類中,執行時不可見的是( )。
(A) 計時器 (B)複選框 (C) 列表框 (D) 選項按鈕組
2.設職工資料表文件已經開啟,其中有工資欄位,要把指標定位在第一個工資欄位的值大於2200元的記錄上,應使用命令( )。
(A)LOCATE FOR 工資>2200 (B)SEEK FOR 工資>2200
(C)SEEK 工資>2200 (D)FIND 工資>2200
3. 在Visual FoxPro中,用zap命令對當前資料表的記錄作了刪除操作,則當前資料表的eof(),bof()的值為( )。
(A) .T. .F. (B) .F. .F.
(C) .F. .T. (D) .T. .T.
4.設D1和D2為日期型資料,N為整數,不能進行的運算是( )。
(A) D2-N (B) D1+D2 (C) D1+N (D) D1-D2
5. 在Visual FoxPro中建立查詢後,可以從表中提取符合指定條件的一組記錄,( )。
(A)但不能修改記錄
(B)同時又能更新資料
(C)但不能設定輸出欄位
(D)同時可以修改資料,但不能將修改的內容寫回原表
6. 以下關於“檢視”的描述正確的是( )。
(A)檢視就是一種查詢
(B)檢視儲存在資料庫中
(C)檢視只能從一個表派生出來
(D)檢視是一個預先定義好的SQL SELECT語句檔案
7. Visual FoxPro 不支援的資料型別有( )。
(A)通用型 (B)貨幣型 (C)備註型 (D)變數型
8. 下列哪組語句可以將變數X、Y的值互換?( )
(A)X=Y (B)X=(X+Y)/2 (C)X=X+Y (D)C=X
Y=X Y=(X-Y)/2 Y=X-Y X=Y
X=Y-X Y=C
9. 參照完整性規則的更新規則中“限制”的含義是( )。
(A)更新父表中連線欄位值時,用新的連線欄位自動修改子表中的所有相關記錄
(B)若子表中有與父表相關的記錄,則禁止修改父表中連線欄位值
(C)父表中的連線欄位值可以隨意更新,不會影響子表中的記錄
(D)父表中的連線欄位值在任何情況下都不允許更新
10. 設A,B,C為三角形的三條邊,且A,B,C均大於0。在以下構成三角形的條件中正確的是( )。
(A) A+B>C,B+C>A,A+C>B (B) A+B>C AND B+C>A AND A+C>B
(C) A+B>C AND (B+C>A OR A+C>B) (D) A+B>C OR (B+C>A AND A+C>B)
11. 如圖所示命令按鈕組
:,當選擇“暫停”時,命令按鈕組的值為
( )。
(A)0 (B)1 (C)2 (D) 暫停
12.下列哪個表示式是非法的( )。
(A) 8 < 4*3 (B) .T.= .F. (C) $32 <> 32 (D) "1" > 0
13.資料庫表的欄位或記錄可以定義有效性規則,規則可以是( )。
(A)邏輯表示式 (B)字元表示式
(C)數值表示式 (D)前3種都可能
14.表示式20+INT(RAND()*100)的取值範圍是( )
(A)(0,0) (B)(0,20) (C)(20,120) (D)(20,100)
15.表單Form1中有一標籤Label1,當如下程式碼執行後,Label1中顯示的內容為( )。
X=-5
Y=IIF(X>0,"該數為正數",IIF(X=0,"該數為零","該數為負數"))
ion=Y
(A)0 (B)-5 (C)該數為負數 (D)該數為-5
16.輸入一個數X,判斷其為正整數的正確表示式為( )。
(A) X>0 OR X=INT(X) (B)X>0 AND X=INT(X)
(C) X>0 OR X/2=INT(X/2) (D) X>0 AND X/2=INT(X/2)
17.資料表中有欄位∶姓名(C)、出生日期(D)、工資(N),設計一表單,表單中新增一個標籤label1,要在標籤label1中顯示錶當前記錄的姓名、出生日期和工資,可用的命令是( )。
(A) ion=姓名+出生日期+工資
(B) ion=姓名+ DTOC(出生日期)+STR(工資,4,1)
(C) ion=VAL(姓名)+VAL(出生日期)+工資
(D)ion= 姓名+出生日期+STR(工資,4)
18. 資料庫表的主索引欄位( )
(A)能出現重複值 (B)不能出現重複值或空值
(C) 能出現空值 (D)不能出現重複值,但能出現空值
19. 能夠將表單的活動物件重新整理的方法是( )
(A) Hide (B) Refresh (C) Release (D) SetFocus
20. Visual FoxPro的命令視窗中,使用SET RELATION命令可以建立兩個表之間的關係,這種關係是
( )。
(A)永久性關係 (B)索引關係 (C)臨時性關係 (D)都不是
21. 副檔名為SCX的檔案是( )
(A)表單檔案 (B) 資料表文件 (C) 資料庫檔案 (D) 專案檔案
22. 使用DIMENSION命令定義陣列後,各陣列元素在沒賦值之前資料型別是( )
(A)字元型 (B)數值型 (C)邏輯型 (D)未定義
23. 有以下命令序列:
X=64-28
Y=X=36
則變數Y的值為( )
(A)36 (B) 23 (C) .T. (D) .F.
24. TIMER控制元件中用來設定計時器間隔時間長短的屬性是( )。
(A) TIMER (B) CLICK (C) INTERVAL (D) SETFOCUS
25.對於表單上的某文字框控制元件來說,下列事件中一定會發生的事件是( )。
(A)Init (B)Click (C)GotFocus (D)Valid
26.表單Form1中有一標籤Label1,當如下程式碼執行後,Label1中顯示的內容為( )。
k1="*"
k2="/"
a=15
b=7
c=3
ion=str(a&k1.b&k2.c)
(A)15 (B)35 (C)2.84 (D)15*7/37
27~36題用vfp-sql實現,基於如下資料表:
圖書(書號,書名,作者,出版社,定價)
圖書銷售記錄(書號,售書日期,數量,售價,付款方式)
其中:定價、售價、數量是數值型,售書日期是日期型,其他是字元型。
27. 查詢圖書表中書名包含“計算機”的所有圖書資訊,正確的SQL語句是( )。
(A) SELECT ALL FROM 圖書 WHERE 書名="計算機"
(B) SELECT 所有資訊 FROM 圖書 WHERE 書名="計算機"
(C) SELECT ALL FROM 圖書 WHERE 書名 not like "計算機"
(D) SELECT * FROM 圖書 WHERE 書名 like "%計算機%" 28. 查詢圖書定價在80~150(含)範圍內的圖書名、出版社、定價,正確的SQL語句是( )。
(A) SELECT * FROM 圖書 WHERE 80<定價 or定價<150< p="">
(B) SELECT * FROM 圖書 WHERE 80≤定價≤150
(C) SELECT 圖書名,出版社,定價 FROM 圖書 WHERE between 80 and 150
(D) SELECT 圖書名,出版社,定價 FROM 圖書 WHERE not between 80 and 150
29. 查詢2012年9月圖書銷售資訊(書名、數量和售書日期),正確的SQL語句是(
(A)SELECT 圖書.書名,數量,售書日期 FROM圖書,圖書銷售記錄WHERE;
圖書.書號=圖書銷售記錄.書號 AND售書日期=ctod("2012-9-*")
(B)SELECT 圖書.書名,數量,售書日期 FROM圖書,圖書銷售記錄;
WHERE 圖書.書號=圖書銷售記錄.書號 AND;
YEAR(售書日期)=2012 AND MONTH(售書日期)=9
(C)SELECT 圖書.書名,數量,售書日期 FROM圖書,圖書銷售記錄;
WHERE 圖書.書號=圖書銷售記錄.書號 AND;
YEAR(售書日期)=2012 OR MONTH(售書日期)=9
(D)SELECT 圖書.書名,數量,售書日期 FROM圖書,圖書銷售記錄WHERE;
圖書.書號=圖書銷售記錄.書號 AND售書日期=2012-9
30. 查詢“人民文學出版社”圖書的銷售數量,正確的SQL語句是( )。
(A)SELECT 出版社,sum(數量) FROM圖書,圖書銷售記錄;
WHERE 圖書.書號=圖書銷售記錄.書號 AND;
出版社="人民文學出版社"
(B)SELECT 出版社,sum(數量) FROM圖書,圖書銷售記錄;
WHERE 出版社="人民文學出版社"
(C)SELECT 出版社,count(數量) FROM圖書,圖書銷售記錄;
WHERE 圖書.書號=圖書銷售記錄.書號 AND;
出版社="人民文學出版社"
(D)SELECT 出版社,count(數量) FROM圖書,圖書銷售記錄;
WHERE 出版社="人民文學出版社"
31. 查詢不同“付款方式”圖書的銷售總量(含數量與售價),正確的SQL語句是(
(A)SELECT付款方式,AVG(數量),SUM(售價) FROM圖書銷售記錄 GROUP BY 付款方式
(B)SELECT付款方式,SUM(數量),SUM(售價) FROM圖書銷售記錄 GROUP BY 付款方式
(C)SELECT付款方式,SUM(數量),AVG(售價) FROM圖書銷售記錄 GROUP BY 付款方式
(D)SELECT付款方式,CNT(數量),CNT(售價) FROM圖書銷售記錄 GROUP BY 付款方式
3 )。 )。
32. 查詢單筆圖書售價最高的前10名的圖書名、定價、售價,正確的SQL語句是( )。
(A)SELECT 書名,定價,售價 FROM 圖書INNER JOIN 圖書銷售記錄 ;
ON 圖書.書號=圖書銷售記錄.書號 ORDER BY 售價
(B)SELECT TOP 10 書名,定價,售價 FROM 圖書INNER JOIN 圖書銷售記錄 ;
ON 圖書.書號=圖書銷售記錄.書號 ORDER BY 售價
(C)SELECT 書名,定價,售價 FROM 圖書INNER JOIN 圖書銷售記錄 ;
ON 圖書.書號=圖書銷售記錄.書號 ORDER BY 售價 DESC
(D)SELECT TOP 10 書名,定價,售價 FROM 圖書INNER JOIN 圖書銷售記錄 ;
ON 圖書.書號=圖書銷售記錄.書號 ORDER BY 售價 DESC
33. 刪除圖書定價低於30(不含)的銷售記錄,正確的SQL語句是( )。
(A)DELETE FROM 圖書銷售記錄 WHERE 書號 IN ;
(SELECT 書號 FROM 圖書 WHERE 定價<30)< p="">
(B)DELETE FROM 圖書銷售記錄 WHERE 書號= ;
(SELECT 書號 FROM 圖書 WHERE 定價<30)< p="">
(C)DROP FROM 圖書銷售記錄 WHERE 書號 IN ;
(SELECT 書號 FROM 圖書 WHERE 定價<30)< p="">
(D)DROP FROM 圖書銷售記錄 WHERE 書號= ;
(SELECT 書號 FROM 圖書 WHERE 定價<30)< p="">
34. 將作者為“金庸”的圖書定價提高15%,正確的SQL語句是( )。
(A)UPDATE 圖書 SET 定價=定價*(1+15%) WHERE 作者 like "金庸"
(B)UPDATE 圖書 SET 定價=定價*1.15 WHERE 作者 like "金庸"
(C)UPDATE 圖書 SET 定價=定價*1.15 WHERE 作者$"金庸"
(D)UPDATE 圖書 SET 定價=定價*(1+15%) WHERE 作者==金庸
35. 將圖書中欄位“出版社”的`型別和長度修改為C/40,正確的SQL語句是( )
(A) RENAME 出版社 C(40) FOR 圖書
(B) ALTER 圖書 RENAME 出版社 C 40
(C) ALTER TABLE 圖書 ALTER 出版社 C(40)
(D) ALTER TABLE圖書CHANG 出版社C(40)
36. 在圖書中新增一個欄位“版次/C/30”,正確的SQL語句是( )
(A) INSERT LIST 圖書 ADD 版次 C(30)
(B) INSERT TABLE 圖書 ADD 版次 C(30)
(C) ALTER LIST 圖書 ADD 版次 C(30)
(D) ALTER TABLE 圖書 ADD 版次 C(30)
二、判斷題(對打√,錯打Χ;每小題1分,共10分)
陣列必須先定義後使用,允許定義三維陣列。( )
2.定義VFP全域性變數ss(如:PUBLIC ss),則ss的初值是.f.。( )
3.主索引只能在資料庫表中指定,而候選索引在資料庫表和自由表中都可使用。( )
4.使用者可以自己新建事件和方法。( )
5.巨集替換函式&後的變數可以是任意型別的變數。( )
6.列表框的AddListItem(4,2,3)方法表示把在列表框的第4行第2列顯示3這個數字。(
7.命令copy stru to 既能複製表文件的結構又能複製表文件的記錄。( )
8.表示式ROUND(155.125,-2)+MOD(35,-4)的結果是199。( )
9.在預設狀態下,關係表示式"An"<"apple"的結果為.T.。( )
10.對某個關係進行投影或聯接運算後,運算的結果還是二維表。( )
4 )
三、填空題(20分,每空2分)
1.如圖1所示,表單執行後,在文字框中輸入考號,單擊查詢按鈕,如果成績表中有此人,則顯示此人的聽力和口語成績。如果成績表中無此人,則顯示“查無此人”。請填空。
圖1
“查詢”按鈕的Click事件程式碼如下:
use yy
kh=_______①______
locate for 考號
=alltrim(kh)
if __②__
ion=str(聽力,3)
ion=str(口語,3)
else
ion=_______③______
ion=""
endif
use
2.設計如圖所示的表單,表單由編輯框和命令按鈕組成。表單執行後,單擊“顯示”按鈕,可以在編輯框中輸出3~100之間的所有素數。“顯示”按鈕的“Click”事件程式碼如下,請填空。
Y=0
FOR m=3 TO 100
FOR n= 2 To m-1
IF MOD(m,n)=0
_______④________
ENDIF
ENDFOR
IF n>m-1
y=y+1
e= e+_______⑤______
IF ______⑥_____
e= e +CHR(13)
ENDIF
ENDIF
ENDFOR
5
3、有一教師管理資料庫中有3個表:其表名和結構分別如下:
基本情況(工號C(6),姓名 C(8),性別 C(8),出生年月(D), 工資 N(5))
授課情況(工號C(6),班級編號 C(8),課程名稱C(20))
查詢授課班級在3個以上的教師姓名和班級數,並按班級數降序排列:
SELECT 姓名,COUNT(*) AS班級數 FROM 基本情況,授課情況 ;
WHERE基本情況.工號=授課情況.工號;
GROUP BY 授課情況.工號HAVING ______ ⑦_____ ;
ORDER BY _______ ⑧______
4.有3個數據表:讀者(讀者編號/C,讀者姓名/C);圖書(書號/C,書名/C);借閱(書號/C,讀者編號/C,借閱日期/D), 建立如圖所示表單, 將組合框與讀者表的讀者編號欄位繫結,表單執行時,在組合框combo1中選擇讀者編號則在標籤中label3中輸出讀者姓名,在列表框中輸出該讀者借閱的圖書的書名和借閱日期。
圖
組合框“combo1”的“interactivechange”事件程式碼:
r
bh=alltrim(e)
select 讀者姓名 from 讀者 where 讀者編號=bh into _______⑨________
ion=aa(1)
sele 書名,借閱日期 from 圖書 a,借閱 b ;
where a.書號=b.書號 and 讀者編號=bh into dbf xx
use xx
tem("書名 借閱日期")
scan
tem(書名+____⑩________)
endscan
③表單“form1”的“unload”事件程式碼:
close all
四、讀程式寫出執行結果(24分)
1. 設計如圖5所示表單,表單執行後,單擊命令按鈕“Command1”,標籤Label1將顯示什麼?
Command1控制元件的Click事件程式碼:
I=3
DO WHILE I<6< p="">
J=2
DO WHILE J<=i-1< p="">
IF INT(I/J)=I/J
EXIT
ENDIF
J=J+1
ENDDO
I=I+1
ENDDO
X="i="+ALLTRIM(STR(I))+" "+"j="+alltrim(str(J))
ion=X
2.某表單程式設計介面如圖3所示,文字框text1和text2初值為0。當在文字框text1,text2中輸入3和2 後,按“計算”按鈕,問文字框text3~6中顯示的內容分別是什麼?
圖3
“計算”按鈕單擊事件程式碼如下:
x=e
y=e
for n=3 to 6
a=+str(n,1)+e=x+y
&a
z=x+y
x=y
y=z
endfor
7
3.有一個數據表,其檔名為,其資料如表1所示。
表1 學生表
Command1,請寫出Label1中顯示的內容(假定系統當前的日期為2012年9月17日)。在Command1的Click事件中有如下程式碼:
圖
select zg
x=""
ion=x
scan
if year(生日)>1980
exit
endif
if 職稱="工程師"
x=x+姓名+str(year(date())-year(生日),6)
endif
skip
endscan
ion=x
4. 設計如圖所示表單,執行表單後,在文字框text1和text2中都輸入1,單擊“command1”按鈕,文字框text3~6中分別會顯示什麼?
8
圖
Form1的load事件程式碼:public x,y
Command1的click事件程式碼:
x=e local y
y=e 2()
1() e=x
e=x e=y
e=y y="5"
自定義方法程式st1: 自定義方法程式st2:
private x x="釣魚島"
x=5 y=x+"是中國的領土"
五.表單程式設計(10分)
“角谷猜想”的內容是:輸入一個自然數,若為偶數除以2,若為奇數乘3加1,得到一個新數後繼續以以上法則演算,經過若干次迴圈,該數一定會變為1。編寫如圖(a)所示的表單程式驗證“角谷猜想”,文字框text1的初值為0,表單執行後,在文字框text1中輸入一個自然數(正整數),在編輯框中輸出演算過程,同時統計迴圈次數,在文字框text2中輸出。如圖(b)所示。請編寫文字框text1的valid事件程式碼。