2003年4月全國計算機等級考試二級FOXBASE語言程式設計

一、選擇題((1)~(40)每小題1分,(41)~(50)每小題2分,共60分)
下列各題 a) 、b)、c)、d)四個選項中,只有一個選項是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。
(1) 用8位無符號二進制數能表示的最大十進制數為 c
a) 127 b) 128 c) 255 d) 256

(2) 在64位高檔微機中,一個字長所占的二進制位數為d
a) 8 b) 16 c) 32 d) 64

(3) 在windows環境下,為了複製一個對象,在用滑鼠拖動該對象時應同時按住 d
a) alt鍵 b)esc鍵 c)shift鍵 d)ctrl鍵

(4) 在windows選單中,暗淡(灰色)的命令項表示該命令a
a) 暫時不能用 b) 正在執行 c) 包含下一層選單 d) 包含對話框

(5) 在dos環境下,為了得到type命令的幫助信息,正確的dos命令為 d
a) type b) type/h c) type/* d) type/?

(6) 下列選項中,能作為合法dos檔案名稱的是 b
a) anp/a.dat b) abccom c) ecd.basic d) xy+z.txt

(7) 下列敘述中正確的是 a
a) 在windows環境下,最大化的視窗是不能移動的
b) 在windows環境下,應用程式視窗最小化後,該應用程式暫停執行
c) 在windows環境下,只有最小化的視窗才能關閉
d) 在windows環境下,不能關閉最大化的視窗

(8) 在windows環境下,工具列中的複製按鈕是c
a) 印表機圖示 b) 剪刀標誌 c) 複製標誌 d) 貼上標誌

9) 在windows98環境下,若要將整個螢幕上顯示的內容存入剪貼簿,可以按d
a) ctrl+printscreen鍵 b) alt+printscree鍵
c) shift+printscreen鍵 d) printscreen鍵

(10) 目前,計算機病毒擴散最快的途徑是b
a) 通過軟體複製 b) 通過網路傳播
c) 通過磁碟考貝 d) 運行遊戲軟體

(11) foxbase是一種 b
a)資料庫 b)資料庫管理系統
c)資料庫系統 d)資料庫應用程式

(12) 資料庫檔案book.dbf中包含memo型欄位,下列描述中錯誤的是
a) 若刪除了備註檔案book.dbt,則該資料庫檔案將無法打開 b
b) 若刪除了該資料庫檔案,則備註檔案book.dbt自動被刪除
c) 若打開該資料庫檔案,則備註檔案book.dbt自動打開
d) 該資料庫檔案的所有備註型欄位的內容都存放在同一個備註檔案中

(13) 在foxbase中,下列數據中屬於常量的是b
a) top b) .y. c) t d) 12/11/2003

(14) 在foxbase中,可以用type命令顯示其內容的檔案類型為c
a).mem b) .dbt c) .prg d) .fox

(15) 不能關閉當前工作區中索引檔案的命令為 d
a)set index to b)close index
c)close all d)set order to

(16) 在相關資料庫檔案存在或已打開的情況下,下列命令中能正確執行的是
a) seek for 基本工>1000 b) @10,12 say"a的值為:",20
c) delete zgjk.dbf d) count rest

(17) 當範圍和條件短語同時省略時,僅作用於當前記錄的命令是
a)count b)delete c)list d)change

(18) 在操作過程中,可以進入人機互動工作方式的命令為
a) append blank b) browse c) replace d)delete all

(19) 不能向資料庫檔案增加記錄的命令是
a) browse b) append c) insert d) replace

(20) 表達式int(-25.8)的值為
a) -25 b) -26 c) 25 d)26

(21) 下列對browse命令描述正確的是
a) 只能瀏覽資料庫檔案,不能修改記錄內容
b) 能瀏覽資料庫檔案,但不能增加或刪除記錄
c) 能瀏覽資料庫檔案,同時也能增加或刪除記錄
d) 不僅能瀏覽資料庫檔案,還能修改資料庫的結構

(22) 在foxbase中,seek命令和locate命令都可以用於查找記錄,但在使用上有所不同。以下表述正確的是
a) seek命令可以一次查找到全部記錄,locate命令一次只能找到一條記錄
b) seek命令需要打開相應索引檔案才能使用,locate命令不需要索引檔案
c) seek命令只能查找字元串,locate命令可以查找任何類型欄位
d) seek命令可以和continue命令聯合使用,而locate命令不可以

(23) 以下關於total命令的表述中,正確的是
a) 命令的執行結果不生成另一個資料庫檔案
b) 所操作的資料庫檔案不必按關鍵欄位索引或排序
c) 命令中的關鍵欄位必須是數值型欄位
d) 只能對數據型欄位進行匯總

(24) 有如下序列("□"表示空格)
store "abc□□" to x
store "xyz"+x to y
store trim(y)-"lmn" to z
?len(z)
執行上述命令之後,螢幕顯示的值是
a) xyzabclmn b) xyzabclmn□□ c) 11 d) 9

(25) 使用display命令時,若範圍短語為all或rest,執行該命令後,記錄指針指向
a) 首記錄 b) 末記錄 c) 首記錄的前面 d) 末記錄的後面

(26) 在foxbase中,已經在多個工作區中打開了若干個資料庫。要顯示當前工作區的區號,應使用命令
a) select b) ?select c) select() d) ?select()

(27) 資料庫檔案已經打開,當前記錄中姓名欄位的值是"張敏"。執行以下命令序列:
姓名="李衛星"
?姓名
螢幕顯示的結果是
a) 張敏 b) 李衛星 c) 張敏李衛星 d) 李衛星張敏

(28) 在foxbase資料庫中,記錄是由欄位值構成的數據序列,記錄長度要比各欄位長度之和多一個位元組,這個位元組用來存放
a) 記錄的分隔標記 b) 記錄的序號
c) 記錄的指針定位標記 d) 記錄的刪除標記

(29) 在foxbase圓點指示符下,要將a盤根目錄下的sst.prg檔案複製到c盤根目錄下的my子目錄下,應使用命令
a) copy a:sst.prg c:my
b) copy file a:sst.prg to c:my
c) copy file a:sst.prg to c:mysst
d) copy file a:sst.prg to c:mysst.prg

(30) 有如下命令序列:
x="a"
y=x
a="黃河長江"
?x+&x-y-&y
執行以上命令序列後,螢幕顯示表達式x+&x-y-&y的結果是
a) 黃河長江 b) a黃河長江a黃河長江
c) a黃河長江a d) a黃河長江黃河長江

(31) 在默認的日期格式下,表列表達式中,結果一定為真(.t.)的是
a) "200">3 b) .not..t.
c) "男" d) ctod("03/21/03")>ctod("03/12/03")

(32) 在沒有打開索引檔案的情況下,如果使用append命令追加一條記錄,其功能等同於命令序列
a) goto eof
insert
b) coto bottom
insert before
c) goto bottom
insert after
d) goto bottom
insert

(33) 要清空當前資料庫檔案hgz.dbf中"獎金"欄位的全部值,應當使用命令
a) modify structure b) delete
c) replace d) zap

(34) 在foxabse中,用於建立或修改過程檔案的命令是
a) modify <檔案名稱> b) modify command <檔案名稱>
c) modify procedure <檔案名稱> d) create command <檔案名稱>

(35) 在foxbase中,能夠進行條件定位的命令是
a)skip b)seek c)locate d)go

(36) 設x=100,y=800,執行以下命令:
?iif(x>100,y-50,y+50)
螢幕顯示結果是
a) 50 b) 750 c) 800 d) 850

(37) 如果測試函式type("w")的值是"u",說明
a) w是數組 b) w未定義
c) w的值為u d) w的值無符號

(38) 在下列記錄定位命令中,不能用found()函式檢其操作是否成功的命令是
a)seek b)find c)locate/continue d)skip

(39) 有如下命令
set deleted on
use abc
go 3
delete next 2
go 4
recall
use
執行最後一條recall命令時,去掉刪除標記的記錄個數是
a) 0 b) 1 c) 2 d) 3

(40) 要清除所有變數名第二個字母為x的記憶體變數應使用命令
a) release all *x b) release all like x
c) release all like ?x* d) release all like "?x"

(41) 為了確保向日期型欄位"起始日期"中輸入1997年以前的日期,應在read之前使用語句
a) @5,15 say "起始日期:" get 起始日期 range, ctod("12/31/96")
b) @5,15 say "起始日期:" get 起始日期 range ctod("12/31/96"),
c) @5,15 say "起始日期:" get 起始日期 for 起始日期<= ctod("12/31/96")
d) @5,15 say "起始日期:" get 起始日期 range date(),ctod("12/31/96")

(42) 若在update命令中使用了random短語,則
a) 源資料庫和目標資料庫都必須按關鍵欄位排序或索引
b) 只需將源資料庫按關鍵欄位排序或索引
c) 只需將目標資料庫按關鍵欄位排序或索引
d) 源資料庫和目標資料庫均可以不按關鍵欄位排序或索引

(43) 設當前資料庫中有20條記錄,當前記錄號為10。有以下各組命令,在沒有打開索引的情況下,兩條命令執行結果相同的是
a) go 5與skip 5 b)go recno()+5與skip 5
c)skip recn0()+5與go recn0()+5 d)go recn0()+5與 list next 5

(44) 已知x=99,y="a",a="telephone",則len(str(x,2)+&y)的值為
a) 19 b) 11 c) 5 d) 5

(45) 已知proc.prg程式清單如下:
set talk off
n=20
t=1
do proc_1 with n,t
?t
set talk on
return
proc_1.prg程式清單如下:
parameters a,b
b=a*b
if a<=2
return
endif
do proc_1 with a-2,b
return
程式proc.prg的功能是
a) 輸出20以內偶數的乘積 b) 輸出20以內奇數的乘積
c) 輸出結果為1 d) 輸出結果為0

以下(46)-(50)題的操作均基於下麵條件:
已建立並打開職工工資資料庫zggz.dbf。該資料庫的結構為:職工編號(c,6),姓名(c,8),性別(c,2),基本工資(n,7,2),獎金(n,7,2,),實發工資(n,8,2)
職工編號 姓名 性別 基本工資 獎金 實發工資
a10001 林大偉 男 1500.50 500.00 2000.50
a15002 高原 男 2000.00 300.00 2300.00
b10008 張高山 男 1200.80 200.00 1400.80
b15009 劉群 女 1050.60 350.00 1400.60
... ... ... ... ... ... >
(46) 要顯示庫中性別欄位值為“女”的所有記錄,錯誤的命令是
a) list for 性別="女" b) display for 性別="女"
c) browse for 性別="女" d) display all for 性別="女"

(47) 為了重新計算每個職工記錄中實發工資欄位的值,可使用命令
a) sum 實發工資
b) sum all 實發工資
c) replace 實發工資 with 基本工資+獎金
d) replace all 實發工資 with 基本工資+獎金

(48) 命令index on基本工資+獎金 to zggz的作用是
a)按基本工資升序排列,當基本工資相同時,按獎金升序排列
b)按基本工資降序排列,當基本工資相同時,按獎金降序排列
c)按基本工資與獎金之和的升序排列
d)按基本工資與獎金之和的降序排列

(49) 輸出結果中,包含"張高山"記錄的命令是
a) list for姓名="高" b) display all for "高"
c) list for left(姓名,2)="高" d) display for at("高",姓名)=1

(50) 能邏輯刪除職工編號中第3位是"5"的職工記錄的命令為
a) delete for substr(職工編號,3)=="5"
b) delete for substr(職工編號,3,1)==5
c) delete for substr(職工編號,3,1)=="5"
d) delete for at(5,職工編號)=3

二、填空
請將每一個空的正確答案寫在答題卡上【1】~【20】序號的橫線上,答在試卷上不得分。
(1) 用十六進制給存儲器中的位元組地址進行編號,若地址編號從000到ffff,則該存諸器的容量為【1】kb。

(2) 假設在當前盤的當前目錄下有兩個檔案a.txt和b.txt,現要將檔案b.txt合併連線到檔案a.txt的後面。若使用copy命令,則完整的命令為【2】 。

(3) e-mail地址由用戶名和域名兩部分組成,這兩部分的分隔設定為【3】。

(4) 假設在當前盤當前目錄下有一個可執行程式user.exe。現要執行該程式,並要求在
執行過程中將顯示輸出的結果信息存入當前盤當前目錄的檔案out.dat中,則完整的dos命令
為【4】。

(5) 在dos環境下,表示印表機的設備檔案名稱為【5】。

(6) 在當前打開的資料庫檔案中有一個長度為6的字元型字?quot;姓名",有如下命令序列
replace 姓名 with "肖光"
? len(姓名)
執行最後一條命令的顯示結果是【6】。

(7) 已知一張職工登記表包括姓名、性別、出生日期、婚否、政治面目、住址、電話等,若要建立保存此表的庫檔案,可以定義為邏輯欄位的項目有【7】。(注意:欄位與欄位之間用頓號分隔,否則不得分)

(8) 有如下命令序列:
use xyz
?reccount()
skip +2
delete
?reccount()
執行第一條輸出命令後,螢幕顯示10。接著執行後面的命令序列,第二條輸出命令顯示的結果是【8】。

(9) 以下命令序列的功能是根據輸入的考試成績,顯示相應的成績等級。等級劃分標準為:低於60分為"不合格",60分以上(含60)為"通過",其中90分以上(含90)的為"優秀"。請對該程式填空:
clear
【9】"請輸入考試成績:"to chj
do case
case chj<60
dj="不合格"
case【10】
dj="通過"
otherwise
dj="優秀"
endcase
?"成績等級:"【11】
return

(10) 有如下命令序列:
set date american
?dtoc(ctod("9/21/2002"),1)
順序執行以上兩條命令之後,在螢幕上將顯示【12】。

(11) 有以下三個資料庫:
職員(職員號c(3),姓名c(6),性別c(2),職務c(10))
訂單(訂單號n(3),客戶號c(3),職員號c(3),簽訂日期d(8),金額n(6,2))
客戶(客戶號c(3),客戶號c(20),地址c(20),電話c(13))
要為訂單庫建立一個二重索引,要求按簽訂日期升序,相同簽訂日期的記錄按職員號升序,索引表達式應為【13】。

(12) 有以下三個資料庫:
職員(職員號c(3),姓名c(6),性別c(2),職務c(10))
訂單(訂單號n(3),客戶號c(3),職員號c(3),簽訂日期d(8),金額n(6,2))
客戶(客戶號c(3),客戶號c(20),地址c(20),電話c(13))
下面程式的功能是利用索引逐條顯示8月份簽訂的訂單記錄。請填空:
select 0
use 訂單
index on month(簽訂日期) to im
clear
seek 8
if【14】
do while【15】
display
skip
enddo
else
?"8月份沒有訂單!"
endif
close database
return

(13) 有以下三個資料庫:
職員(職員號c(3),姓名c(6),性別c(2),職務c(10))
訂單(訂單號n(3),客戶號c(3),職員號c(3),簽訂日期d(8),金額n(6,2))
客戶(客戶號c(3),客戶號c(20),地址c(20),電話c(13))
下面的程式的功能是分別統計職員號以a或b開頭的職員所簽訂的訂單數目和總金額。請填空:
clear
store 0 to nl,sl,n2,s2
select 0
use 訂單
do while .not. eof()
do case
case【16】
n1=n1+1
s1=s1+金額
case【17】
n2=n2+1
s2=s2+金額
endcase
【18】
enddo
?"a職員訂單數;"+str(n1,3)+space(10)+"總金額;"+str(s1,7,2)
?"b職員訂單數;"+str(n2,3)+space(10)+"總金額;"+str(s2,7,2)
close database
return

(14) 有以下三個資料庫:
職員(職員號c(3),姓名c(6),性別c(2),職務c(10))
訂單(訂單號n(3),客戶號c(3),職員號c(3),簽訂日期d(8),金額n(6,2))
客戶(客戶號c(3),客戶號c(20),地址c(20),電話c(13))
下面程式的功能是根據訂單號查詢該訂單及相關職員和客戶的信息,要求在螢幕的第6行第20列開始顯示輸出信息。請填空:
set safety
clear
input "請輸入訂單號:"to mddh
locate for 訂單號=mddh
if eof()
?"無此訂單號!"
else
【20】"職員:"+職員-〉姓名+"客戶;"+客戶-〉客戶名+"金額:"-str(金額,6,2)
endif
wait "繼續查詢嗎(y/n)?" to yn
enddo
close database
set safety on
return