閱讀以下應(yīng)用說明、屬性設(shè)置以及Visual Basic 程序代碼,將解答寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【應(yīng)用說明】
本應(yīng)用運(yùn)行時(shí),由用戶輸入一個(gè)正整數(shù)n后自動(dòng)產(chǎn)生n個(gè)正整數(shù),然后按照用戶的指定要求對(duì)該組數(shù)進(jìn)行處理。該應(yīng)用的運(yùn)行界面如下圖所示:
1. 窗體中有兩個(gè)文本框(txtSrc,txtObj)、兩個(gè)標(biāo)簽(lblSrc,lblObj)、三個(gè)命令按鈕(cmdGendat,cmdProc,cmdQuit)和一個(gè)彈出式菜單(procMenu,初始時(shí)不可見)。
2.文本框txtSrc(由標(biāo)簽lblSrc提示)用于顯示產(chǎn)生的數(shù)據(jù),文本框txtObj(由標(biāo)簽lblObj提示)用于顯示處理結(jié)果,要求每行顯示一個(gè)整數(shù)。
3. 程序啟動(dòng)時(shí),命令按鈕cmdProc(運(yùn)算要求)不可用。點(diǎn)擊命令按鈕cmdGendat(產(chǎn)生數(shù)據(jù))后,提示用戶輸入一個(gè)n的值并生成n個(gè)正整數(shù)存入數(shù)組元素a(1)~a(n),然后將數(shù)據(jù)逐行顯示在txtSrc中,并設(shè)置命令按鈕cmdProc可用。
4. 點(diǎn)擊命令按鈕cmdProc(運(yùn)算要求)后彈出菜單。選擇菜單項(xiàng)并單擊后,進(jìn)行相應(yīng)處理并將結(jié)果顯示在txtObj中,同時(shí)將lblObj的標(biāo)題改為該菜單項(xiàng)表示的處理命令。
彈出式菜單“運(yùn)算要求”的結(jié)構(gòu)如下表所示:
一個(gè)整數(shù)序列的中位數(shù)指對(duì)該序列進(jìn)行非遞減(增)排列后最中間位置上的元素。若序列長(zhǎng)度為偶數(shù),則取中間兩個(gè)元素的平均值為其中位數(shù)。
【屬性設(shè)置】
為實(shí)現(xiàn)單擊命令按鈕 cmdProc 后彈出“運(yùn)算要求”菜單(procMenu),設(shè)計(jì)時(shí)需將procMenu的 (1) 屬性設(shè)置成false。
供(1)選擇的屬性: Default Enabled ScaleMode Style Visible 從下列3道試題(試題五至試題七)中任選1道解答。如果解答的試題數(shù)超過1道,則題號(hào)小的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$("請(qǐng)輸入數(shù)組元素個(gè)數(shù):", "輸入序列長(zhǎng)度")
If (n < 1) Then
MsgBox "輸入數(shù)據(jù)錯(cuò)誤!", 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) ’設(shè)置運(yùn)算要求命令按鈕可用
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) ’用選擇排序法對(duì)數(shù)組a進(jìn)行部分排序
a(0) = a(i):k = i ’ a(0)用作臨時(shí)變量,暫存第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í),取中間一個(gè)數(shù)
txtObj.Text = Str$(a( (5) ))
Else ’n為偶數(shù)時(shí),取中間兩個(gè)數(shù)的平均值
txtObj.Text = Str$(Int((a(n \ 2) + a(n \ 2 + 1)) / 2))
End If
End Sub
’其他代碼略