閱讀以下應用說明、屬性設置以及Visual Basic 程序代碼,將解答寫在答題紙的對應欄內。
【應用說明】
本應用運行時,由用戶輸入一個正整數(shù)n后自動產(chǎn)生n個正整數(shù),然后按照用戶的指定要求對該組數(shù)進行處理。該應用的運行界面如下圖所示:
1. 窗體中有兩個文本框(txtSrc,txtObj)、兩個標簽(lblSrc,lblObj)、三個命令按鈕(cmdGendat,cmdProc,cmdQuit)和一個彈出式菜單(procMenu,初始時不可見)。
2.文本框txtSrc(由標簽lblSrc提示)用于顯示產(chǎn)生的數(shù)據(jù),文本框txtObj(由標簽lblObj提示)用于顯示處理結果,要求每行顯示一個整數(shù)。
3. 程序啟動時,命令按鈕cmdProc(運算要求)不可用。點擊命令按鈕cmdGendat(產(chǎn)生數(shù)據(jù))后,提示用戶輸入一個n的值并生成n個正整數(shù)存入數(shù)組元素a(1)~a(n),然后將數(shù)據(jù)逐行顯示在txtSrc中,并設置命令按鈕cmdProc可用。
4. 點擊命令按鈕cmdProc(運算要求)后彈出菜單。選擇菜單項并單擊后,進行相應處理并將結果顯示在txtObj中,同時將lblObj的標題改為該菜單項表示的處理命令。
彈出式菜單“運算要求”的結構如下表所示:
一個整數(shù)序列的中位數(shù)指對該序列進行非遞減(增)排列后最中間位置上的元素。若序列長度為偶數(shù),則取中間兩個元素的平均值為其中位數(shù)。
【屬性設置】
為實現(xiàn)單擊命令按鈕 cmdProc 后彈出“運算要求”菜單(procMenu),設計時需將procMenu的 (1) 屬性設置成false。
供(1)選擇的屬性: Default Enabled ScaleMode Style Visible 從下列3道試題(試題五至試題七)中任選1道解答。如果解答的試題數(shù)超過1道,則題號小的1道解答有效。
【Visual Basic 程序代碼】
Dim a() As Integer, n As Integer
Private Sub Form_Load()
txtSrC.Text = "": txtObj.Text = "": (2) = False
End Sub
Private Sub cmdGendat_Click() ’生成正整數(shù)序列并存入數(shù)組a
On Error GoTo Error_handler
n = InputBox$("請輸入數(shù)組元素個數(shù):", "輸入序列長度")
If (n < 1) Then
MsgBox "輸入數(shù)據(jù)錯誤!", vbOKOnly, "提示:"
GoTo Error_handler:
End If
ReDim a(n) As Integer
s = ""
For i = 1 To n ’將生成的正整數(shù)存入a(1)~a(n)中
a(i) = Int(Rnd * 10000) : s = s & Str$(a(i)) & vbCrLf
Next
txtSrC.Text = s
(3) ’設置運算要求命令按鈕可用
Error_handler:
End Sub
Private Sub cmdProc_Click()
PopupMenu procMenu
End Sub
Private Sub MidNum_Click() ’求中位數(shù)
lblObj.Caption = MidNum.Caption & ":"
For i = 1 To round((n + 1)/2) ’用選擇排序法對數(shù)組a進行部分排序
a(0) = a(i):k = i ’ a(0)用作臨時變量,暫存第i次選出的最小元素
For j = i + 1 To n
If a(j) < a(0) Then
a(0) = a(j): k = (4)
End If
Next
If k <> i Then
a(k) = a(i): a(i) = a(0)
End If
Next
If n / 2 - n \ 2 > 0 Then ’n為奇數(shù)時,取中間一個數(shù)
txtObj.Text = Str$(a( (5) ))
Else ’n為偶數(shù)時,取中間兩個數(shù)的平均值
txtObj.Text = Str$(Int((a(n \ 2) + a(n \ 2 + 1)) / 2))
End If
End Sub
’其他代碼略