2004年4月全國計算機等級考試二級Visual Basic語言程

一、選擇題((1)—(20)每小題2分,(21)—(30)每小題3分,共70分)
下列各題 a) 、b)、c)、d)四個選項中,只有一個選項是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。

(1) 在窗體上畫一個名稱為command1的命令按鈕,然後編寫如下事件過程:

private sub command1_click()

  move 500,500

end sub

程式運行後,單擊命令按鈕,執行的操作為

a) 命令按鈕移動到距窗體左邊界、上邊界各500的位置

b) 窗體移動到距螢幕左邊界、上邊界各500的位置

c) 命令按鈕向左、上方向各移動500

d) 窗體向左、上方向各移動500

(2) 在窗體上有若干控制項,其中有一個名稱為text1的文本框。影響text1的tab順序的屬性是

a) tabstop b)enabled

c) visible d)tabindex

(3) 以下定義數組或給數組元素賦值的語句中,正確的是

(4) 在窗體上畫一個名稱為list1的列表框,為了對列表框中的每個項目都能進行處理,應使用的循環語句為

a) for i=0 to list1.listcount-1

……

next

b) for i=0 to listcount-1

……

next

c) for i=1 to list1.listcount

……

next

d) for i=1 to listcount

……

next

(5) 以下case語句中錯誤的是

a) case 0 to 10  b) case is>10

c) case is>10 and is<50  d) case 3,5,is>10

(6) 以下關於圖片框控制項的說法中,錯誤的是

a) 可以通過print方法在圖片框中輸出文本

b) 清空圖片框控制項中圖形的方法之一是載入一個空圖形

c) 圖片框控制項可以作為容器使用

d) 用stretch屬性可以自動調整圖片框中圖形的大小

(7) 執行語句s=len(mid("visualbasic",1,6))後,s的值是

a) visual  b) basic  c) 6  d) 11

(8) 以下敘述中錯誤的是

a) 下拉式選單和彈出式選單都用選單編輯器建立

b) 在多窗體程式中,每個窗體都可以建立自己的選單系統

c) 除分隔線外,所有選單項都能接收click事件

d) 如果把一個選單項的enabled屬性設定為false,則該選單項不可見

(9) 在窗體上畫一個命令按鈕,其名稱為command1,然後編寫如下事件過程:

private sub command1_click()

  a = 12345

print format$(a, "000.00")

end sub

程式運行後,單擊命令按鈕,窗體上顯示的是

a) 123.45 b) 12345.00   c) 12345    d)00123.45

(10) 以下敘述中錯誤的是

a) 一個工程可以包括多種類型的檔案

b) visual basic應用程式既能以編譯方式執行,也能以解釋方式執行

c) 程式運行後,在記憶體中只能駐留一個窗體

d) 對於事件驅動型應用程式,每次運行時的執行順序可以不一樣

(11) 以下關於函式過程的敘述中,正確的是

a) 函式過程形參的類型與函式返回值的類型沒有關係

b) 在函式過程中,過程的返回值可以有多個

c) 當數組作為函式過程的參數時,既能以傳值方式傳遞,也能以傳址方式傳遞

d) 如果不指明函式過程參數的類型,則該參數沒有數據類型

(12) 以下關於變數作用域的敘述中,正確的是

a) 窗體中凡被聲明為private的變數只能在某個指定的過程中使用

b) 全局變數必須在標準模組中聲明

c) 模組級變數只能用private關鍵字聲明

d) static類型變數的作用域是它所在的窗體或模組檔案

(13) 確定一個控制項在窗體上的位置的屬性是

a) width和height  b) width或height

c) top和left  d) top或left

(14) 在窗體上畫一個名稱為text1的文本框和一個名稱為command1的命令按鈕,然後編寫如下事件過程

  private sub command1_click()

    text1.text = "visual"

  me.text1 = "basic"

  text1 = "program"

end sub

程式運行後,如果單擊命令按鈕,則在文本框中顯示的是

a) visual  b) basic  c) program  d) 出錯

(15) 以下關係表達式中,其值為false的是

a) "abc">"abc" b) "the"<>"they"

c) "visual"=ucase("visual")  d) "integer">"int"

(16) 語句print 5/4*6 mod 2的輸出結果是

a) 0 b) 1   c) 2    d) 3

(17) 在窗體上畫一個文本框、一個標籤和一個命令按鈕,其名稱分別為text1、label1和command1,然後編寫如下兩個事件過程:

private sub command1_click()

strtext = inputbox("請輸入")

text1.text = strtext

end sub

 

private sub text1_change()

label1.caption = right(trim(text1.text), 3)

end sub

程式運行後,單擊命令按鈕,如果在輸入對話框中輸入abcdef,則在標籤中顯示的內容是

a)空  b) abcdef  c) abc  d) def

(18) 在窗體上畫一個名稱為command1的命令按鈕,然後編寫如下事件過程:

private sub command1_click()

x = -5

if sgn(x) then

y = sgn(x ^ 2)

else

  y = sgn(x)

end if

print y

end sub

程式運行後,單擊命令按鈕,窗體上顯示的是

a) -5  b) 25 c) 1    d) -1

(19) 一個工程中含有窗體form1、form2和標準模組model1,如果在form1中有語句pubilc x as integer,在model1中有語句pubilc y as integer,則以下敘述中正確的是

a) 變數x、y的作用域相同 b) y的作用域是model1

c) 在form1中可以直接使用x  d) 在form2中可以直接使用x和y

(20) 在窗體上畫一個名稱為drive1的驅動器列表框,一個名稱為dir1的目錄列表框。當改變當前驅動器時,目錄列表框應該與之同步改變。設定兩個控制項同步的命令放在一個事件過程中,這個事件過程是

a)drive1_change b) drive1_click

c) dir1_click  d) dir1_change

(21) 在窗體上畫一個命令按鈕(其name屬性為command1),然後編寫如下代碼:

option base 1

private sub command1_click()

  dim a

  s = 0

  a = array(1,2,3,4)

  j = 1

  for i = 4 to 1 step -1

  s = s + a(i) * j

  j = j * 10

  next i

  print s

end sub

運行上面的程式,單擊命令按鈕,其輸出結果是

a) 4321    b) 1234 c) 34  d) 12

(22) 在窗體上畫一個名稱為text1的文本框,要求文本框只能接收大寫字母的輸入。以下能實現該操作的事件過程是

a) private sub text1_keypress(keyascii as integer)

  if keyascii < 65 or keyascii > 90 then

  msgbox "請輸入大寫字母"

  keyascii = 0

  end if

end sub

b) private sub text1_keydown(keycode as integer, shift as integer)

 if keycode < 65 or keycode > 90 then

  msgbox "請輸入大寫字母"

  keycode = 0

  end if

end sub

c) private sub text1_mousedown(button as integer, shift as integer, x as single, y as single)

if asc(text1.text) < 65 or asc(text1.text) > 90 then

  msgbox "請輸入大寫字母"

end if

end sub

d) private sub text1_change()

  if asc(text1.text) > 64 and asc(text1.text) < 91 then

  msgbox "請輸入大寫字母"

  end if

end sub

(23) 假定在窗體(名稱為form1)的代碼視窗中定義如下記錄類型:

private type animal

  animalname as string*20

  acolor as string*10

end type

在窗體上畫一個名稱為command1的命令按鈕,然後編寫如下事件過程:

private sub command1_click()

  dim rec as animal

  open "c:\vbtest.dat" for random as #1 len = len(rec)

  rec.animalname = "cat"

  rec.acolor = "white"

  put #1, , rec

  close #1

end sub

則以下敘述中正確的是

a) 記錄類型animal不能在form1中定義,必須在標準模組中定義

b) 如果檔案c:\vbtest.dat不存在,則open命令執行失敗

c) 由於put命令中沒有指明記錄號,因此每次都把記錄寫到檔案的末尾

d) 語句“put #1, , rec”將animal類型的兩個數據元素寫到檔案中

(24) 在窗體上畫一個名稱為text1的文本框,一個名稱為command1的命令按鈕,然後編寫如下事件過程和通用過程:

private sub command1_click()

  n = val(text1.text)

  if n = n/2 then

  f = f1(n)

  else

  f = f2(n)

  end if

  print f; n

end sub

 

public function f1(byref x)

  x=x*x

  f1=x+x

end function

 

public function f2(byval x)

  x=x*x

  f2=x+x+x

end function

程式運行後,在文本框中輸入6,然後單擊命令按鈕,窗體上顯示的是

a) 72  36 b) 108  36 c) 72 6 d) 108  6

(25) 在窗體上畫一個名稱為command1的命令按鈕,然後編寫如下事件過程:

private sub command1_click()

  c = 1234

  c1 = trim(str(c))

  for i = 1 to 4

  print  

  next

end sub

程式運行後,單擊命令按鈕,要求在窗體上顯示如下內容

1

12

123

1234

則在下劃線處應填入的內容為

a) right(c1,i)  b) left(c1,i)  c) mid(c1,i,1) d) mid(c1,i,i)

(26) 在窗體上畫一個名稱為command1的命令按鈕和一個名稱為text1的文本框,然後編寫如下事件過程:

private sub command1_click()

  n = val(text1.text)

  for i = 2 to n

  for j = 2  to  sqr(i)

  if  i  mod  j = 0 then exit for

  next j

  if  j > sqr(i)  then  print  i

  next i

end sub

該事件過程的功能是

a) 輸出n以內的奇數 b) 輸出n以內的偶數

c) 輸出n以內的素數 d) 輸出n以內能被j整除的數

(27) 在以下描述中正確的是

a) 標準模組中的任何過程都可以在整個工程範圍內被調用

b) 在一個窗體模組中可以調用在其他窗體中被定義為public的通用過程

c) 如果工程中包含sub main過程,則程式將首先執行該過程

d) 如果工程中不包含sub main過程,則程式一定首先執行第一個建立的窗體

(28) 在窗體上畫一個名稱為command1的命令按鈕,然後編寫如下通用過程和命令按鈕的事件過程:

private function f(m as integer)

  if m mod 2 = 0 then

  f = m

  else

  f = 1

  end if

end function

private sub command1_click()

  dim i as integer

  s = 0

  for i = 1 to 5

  s = s + f(i)

  next

  print s

end sub

程式運行後,單擊命令按鈕,在窗體上顯示的是

a) 11  b) 10 c) 9  d) 8

(29) 在窗體上畫一個名稱為text1的文本框和一個名稱為command1的命令按鈕,然後編寫如下事件過程:

private sub command1_click()

  dim array1(10, 10) as integer

  dim i as integer, j as integer

  for i = 1 to 3

  for j = 2 to 4

  array1(i, j) = i + j

  next j

  next i

  text1.text = array1(2, 3) + array1(3, 4)

end sub

程式運行後,單擊命令按鈕,在文本框中顯示的值是

a) 15  b) 14 c) 13 d) 12

(30) 在窗體上畫四個文本框(如圖所示),並用這四個文本框建立一個控制項數組,名稱為text1(下標從0開始,自左至右順序增大),然後編寫如下事件過程:

 

 

 

 

 

 

private sub command1_click()

  for each textbox in text1

  text1(i) = text1(i).index

  i = i + 1

  next

end sub

程式運行後,單擊命令按鈕,四個文本框中顯示的內容分別為

a) 0 1 2 3 b) 1 2 3 4

c) 0 1 3 2 d) 出錯信息

二、填空題(每空2分,共30分)
請將每空的正確答案寫在答題卡【1】~【15】序號的橫線上,答在試卷上不得分。

(1) visual basic應用程式中標準模組檔案的擴展名是【1】 。

(2) 在選單編輯器中建立一個選單,其主選單項的名稱為mnuedit,visible屬性為false,程式運行後,如果用滑鼠右鍵單擊窗體,則彈出與mnuedit相應的選單。以下是實現上述功能的程式,請填空。

private sub form 【2】 (button as integer, shift as integer, x as single, y as single)

if button=2 then

  【3】 mnuedit

end if

end sub

(3) 為了使計時器控制項timer1每隔0.5秒觸發一次timer事件,應將timer1控制項的【4】屬性設定為【5】 。

(4) 與數學表達式 對應的visual basic表達式是【6】 。

(5) 將c盤根目錄下的圖形檔案moon.jpg裝入圖片框picture1的語句是【7】 。

(6) 在窗體上畫一個名稱為text1的文本框,然後畫三個單選按鈕,並用這三個單選按鈕建立一個控制項數組,名稱為option1,程式運行後,如果單擊某個單選按鈕,則文本框中的字型將根據所選擇的單選按鈕切換,如圖所示,請填空。

private sub option1_click(index as integer)

  select case 【8】

  case 0

  a = "宋體"

  case 1

  a = "黑體"

  case 2

  a = "楷體_gb2312"

  end select

  text1. 【9】 =a

end sub

 (7) 在窗體上畫兩個組合框,其名稱分別為combo1、combo2,然後畫兩個標籤,名稱分別為label1、label2,如圖所示,程式運行後,如果在某個組合框中選擇一個項目,則把所選中的項目在其下面的標籤中顯示出來。請填空。

private sub combo1_click()

  call showitem(combo1, label1)

end sub

 

private sub combo2_click()

  call showitem(combo2, label2)

end sub

 

public sub showitem(tmpcombo as combobox, tmplabel as label)

  【10】.caption =【11】.text

end sub

(8)在窗體上畫一個名稱為command1的命令按鈕,然後編寫如下事件過程:

private sub command1_click()

  n = 5

  f = 1

  s = 0

  for i = 1 to n

  f = f【12】

  s = s + f

  next

  print s

end sub

該事件過程的功能是計算

 

的值。請填空。

(9)在窗體上畫一個名稱為command1的命令按鈕,然後編寫如下程式:

option base 1

private sub command1_click()

  dim a(10) as integer

  for i = 1 to 10

  a(i) = i

  next

  call swap( 【13】 )

  for i = 1 to 10

  print a(i);

  next

end sub

sub swap(b() as integer)

  n = 【14】

  for i = 1 to n / 2

  t = b(i)

  b(i) = b(n)

  b(n) = t

  【15】

  next

end sub

上述程式的功能是,通過調用過程swap,調換數組中數值的存放位置,即a(1)與a(10)的值互換,a(2)與a(9)的值互換,……,a(5)與a(6)的值互換。請填空。