【正文】
87 實驗 6 數(shù)組程序設(shè)計 實驗?zāi)康?: 1.掌握的定義方法。 2.掌握靜態(tài)和動態(tài)數(shù)組使用。 3.掌握控件數(shù)組的產(chǎn)生方法 4.明確控件數(shù)組中控件名稱的特點 5.掌握運用控件數(shù)組的編程方法。 實驗 實驗 任務(wù) : 編程 隨機產(chǎn)生 10 個任意的兩位正整數(shù),并把它們保存在數(shù)組 a(1 To 10)中, 要求 輸出數(shù)組中所存放的 10 個數(shù)值 ,如圖 61 所示 。 圖 61 實驗 的實驗結(jié)果 提示 : 可以 根據(jù) Rnd 函數(shù)的取值范圍來確定如何隨機產(chǎn)生兩位正整數(shù)。 實驗 實驗任務(wù): 編程 用 InputBox函數(shù)輸入一 個 二維數(shù)組(矩陣) ,并在窗體上按如圖 62 所示的標(biāo)準(zhǔn)格式輸出每行中最大的元 素 。 88 圖 62 二維數(shù)組的輸出 提示 : 1.輸入時 InputBox上的提示信息要表明當(dāng)前輸入的是矩陣中的哪一個元素(動態(tài)顯示方法),如圖 63 所示。 圖 63 輸入框 2.?dāng)?shù)組輸入和輸出,一般情況下都要使用兩重循環(huán)結(jié)構(gòu)。外面一重循環(huán)對應(yīng)于行的變化,里面一重循環(huán)對應(yīng)于列的變化(列的變化比行的變化快)。標(biāo)準(zhǔn)輸出方式是在 語句的輸出項之間用逗號間隔,輸出時要產(chǎn)生 3 行 ?4 列的效果,還應(yīng)該在兩重循環(huán)之間添加 一個無參數(shù)的 語句,用來換行。求每行的最大值也需要通過雙重循環(huán)實現(xiàn)。 實驗 步驟: 1. 完善代碼 Option Explicit Private Sub Form_Click() Dim a(4, 3) As Integer, i As Integer, j As Integer 89 Dim max As Integer For i = 1 To 4 For j = 1 To 3 a(i, j) = InputBox(請輸入矩陣的第 ( amp。 i amp。 , amp。 j amp。 )元數(shù) , 輸入矩陣元數(shù) ) a(i, j), Next j Next i For i = 1 To 4 For j = 2 To 3 If max a(i, j) Then Next j 第 amp。 i amp。 行最大的是: 。 max Next i End Sub 2. 保存文件, 調(diào)試運行 。 思考: 如果要求顯示每行最大元素的行列位置,應(yīng)如何修改代碼。 實驗 實驗任務(wù): 已知 一個數(shù)如果恰好等于它的因子之和,這個數(shù)就被稱為“完數(shù)”。一個數(shù)的因子是指除了該數(shù)本身以外能夠被其整除的數(shù)。例如 6 是一個完數(shù),因為 6的因子是 1, 2, 3,而且 6=1+2+3。 要求 編程對于任意輸入的一個數(shù),能夠判斷出該數(shù)是否是完數(shù),并對不同結(jié)果進行輸出;單擊“ 輸入下一個數(shù)”時,要清除文本框和圖片框中的內(nèi)容,并且光標(biāo)在文本框中閃爍。 提示 : 可以將輸入的數(shù)的因子逐個求出,放到數(shù)組中,并對因子進行累加,若為完數(shù)或不是完數(shù)結(jié)果輸出如圖 64 所示。因為無法預(yù)知因數(shù)的個數(shù),所以要使用動態(tài)數(shù)組。 90 圖 64 運行結(jié)果界面 實驗步驟: 1.窗體布局,在窗體上擺放 Label、 TextBox、 Frame、 PictureBox(用于顯示結(jié)果 )各一個,在將三個 CommandButton 拖放到窗體上,具體布局參見圖 64。 2. 完善代碼 Private Sub CmdJudeg_Click() Dim m As Integer, i As Integer, j As Integer, k As Integer Dim a() m = ReDim a(1) 39。重定義數(shù)組 a(1) = 1 ‘k = 1 j = 1 For i = 2 To ‘ m 1 If m Mod i = 0 Then k = k + i 39。因數(shù)和 j = j + 1 39。因數(shù)個數(shù) ReDim Preserve a(j) 39。重定義數(shù)組,且保留原有數(shù)據(jù) a(j) = i 39。將因數(shù)保存在數(shù)組中 End If Next i If m = k Then m amp。 是完數(shù),因為 m。 =。 91 For i = 1 To UBound(a) 1 39。UBound(a)求數(shù)組上界函數(shù) a(i)。 +。 Next I a(i) 39。輸出最后一個因數(shù) Else m amp。 不是完數(shù) End If End Sub Private Sub CmdExit_Click() Unload Me End Sub Private Sub CmdNext_Click() 39。清除圖片框中內(nèi)容 = ‘ End Sub 3. 保存文件, 調(diào)試運行 。 思考: 如何 修改 程序求出 1000以內(nèi)的所有“完數(shù)” 并將結(jié)果存入一個 文件?試一試。 實驗 實驗任務(wù): 編程 隨機產(chǎn)生 32 個學(xué)生的計算機課程的成績存放數(shù)組 Mark(1 To 32)中,統(tǒng)計各分數(shù)段 50~5 60~6 70~7 80~8 90~100 的人數(shù) n 以及求出最高分 max和最低分 min。結(jié)果輸出要求: 32名學(xué)生的成績按每行 8個顯示在窗體上,第 5行顯示最高分和最低分 ,并以同樣輸出格式將結(jié)果存放于順序文件 中 。 提示: 統(tǒng)計各分數(shù)段的人數(shù), 可以 利用數(shù)組下標(biāo)來實現(xiàn)。 實驗 實驗任務(wù): 編程任意輸入一個日期,即可計算出這個日期是一年中的 第幾天。 提示: 一年中的每一個月天數(shù)是一定的,只有閏年時, 2 月份是 29 天,所以要對輸入的年份進行閏 年 判斷。另外 , 每月的天數(shù)可以事先賦值到數(shù)組中,但是用 InputBox 從 92 鍵盤接受多個固定數(shù)據(jù)很不方便, VB 中又沒有給數(shù)組賦初值的語句。為解決這一問題,采用將初值放在 ListBox中,運行時用代碼將 ListBox中的數(shù)據(jù)給數(shù)組賦初值。 閏年算法是年份能被 4 整除同時不能被 100 整除,或者年份能被 100 整除同時能被400 整除,這一年就是閏年,是閏年就用一個標(biāo)簽框表示出來。將閏