【正文】
int ″你的成績不及格 ″ Case 60 To 69 Print ″你的成績是及格 ″ Case 70 To 79 Print ″你的成績中等 ″ Case 80 To 89 Print ″你的成績良好 ″ Case 90 To 100 Print ″你的成績優(yōu)秀 ″ Case Else Print ″你輸入的成績有問題 ″ End Select End If End Sub (3) 在 Case 子句中使用 IS 在 Case 子句中可以使用 IS指定一個(gè)條件,其格式如下: Case IS 關(guān)系運(yùn)算符 表達(dá)式 使用 “ IS”指定條件時(shí),只能是簡單條件,不能用邏輯運(yùn)算符將兩個(gè)簡單條件表達(dá)式連接到一起。 1. For循環(huán) For循環(huán)語句的一般格式為: For 循環(huán)變量 =循環(huán)變量初值 To 循環(huán)變量終值 [Step 增量 ] [循環(huán)體 ] [Exit For] Next 變量 循環(huán)語句 其中, For語句的作用是確定循環(huán)變量的值如何變化,也就是用來控制循環(huán)的次數(shù)。 Exit For語句的作用是停止循環(huán)過程跳出循環(huán),流程轉(zhuǎn)到 Next語句的下一語句。 【 例 】 給一個(gè)整數(shù) n(n2),判斷其是否為素?cái)?shù)。 判斷一個(gè)數(shù) n是否是素?cái)?shù),只需將 n被 2~n之間的全部整數(shù)除,如果都除不盡, n就是素?cái)?shù),否則 n是非素?cái)?shù)。 為了判斷 n是否是素?cái)?shù),需要通過循環(huán)將 n依次被2~n1之間的數(shù)整除。設(shè)置一個(gè)標(biāo)志變量 flag,flag=0表示 n未被任何一個(gè)整數(shù)整除過。如果在某一次循環(huán)中, n能被一個(gè)整數(shù)整除,就將 flag改變?yōu)?1。程序如下: Private Sub Command1_Click() n = Val() flag = 0 ′判斷 n 是否能被 2~ n1 For i = 2 To n 1 If (n Mod i) = 0 Then flag = 1 If flag = 1 Then Exit For Next i ′ If flag = 0 Then ′ n Print n。 ″是素?cái)?shù)! ″ Else ′ n Print n。 ″不是素?cái)?shù)! ″ End If End Sub 運(yùn)行程序,輸入 7,單擊 “ 判斷素?cái)?shù) ” 按鈕,窗體上顯示 “ 7 是素?cái)?shù) ” 。再向文本框中輸入 9,執(zhí)行程序,運(yùn)行結(jié)果如圖 。 圖 2. Do循環(huán) Do循環(huán)語句的一般格式有以下 5 (1) 第 1種格式如下: Do Loop 這是最簡單的 Do循環(huán)格式,這種結(jié)構(gòu)沒有任何條件,循環(huán)將無限制地進(jìn)行下去,除非循環(huán)體內(nèi)有控制語句(如 Exit Do語句或 GoTo語句等 )。 (2) 第 2種格式如下: Do While 條件 Loop 這種格式的 Do循環(huán)是在 Do后面加了一個(gè) While子句。While子句的作用是當(dāng)給定的條件為真時(shí)繼續(xù)執(zhí)行循環(huán)體,當(dāng)條件為假時(shí)終止循環(huán)。 (3) 第 3種格式如下: Do Until 條件 Loop 將第 2種格式中的 While子句換成 Until子句, Until子句是當(dāng)指定條件為真時(shí)終止循環(huán)。 (4) 第 4種格式如下: Do Loop While 條件 第 4種格式將 While子句移到了 Loop的后面,它與第 2種格式的不同之處在于,當(dāng)循環(huán)結(jié)束時(shí)進(jìn)行指定條件的測試,也就是說第一次進(jìn)入循環(huán)體是無條件的,無論如何都要執(zhí)行循環(huán)體一次。 (5) 第 5種格式如下: Do Loop Until 它與第 3種格式相比,是將 Until子句移到了 Loop后面,先進(jìn)入循環(huán)體,后進(jìn)行指定條件的測試。循環(huán)被無條件地執(zhí)行一次。 把一組具有相同屬性、類型的數(shù)據(jù)放在一起,并用一個(gè)統(tǒng)一的名字作為標(biāo)識(shí),這就是數(shù)組。數(shù)組中的每一個(gè)數(shù)據(jù)稱為一個(gè)數(shù)組元素,用數(shù)組名和該數(shù)據(jù)在數(shù)組中的序號(hào)來標(biāo)識(shí),序號(hào)稱為下標(biāo)。在 Visual Basic中如果沒有特別的說明,數(shù)組元素的下標(biāo)是從 0開始的,即第一個(gè)元素的下標(biāo)為 0。在 Visual Basic中定義數(shù)組的一般格式為: Dim 數(shù)組名( [下界 To ]上界) [As 數(shù)據(jù)類型 ] 數(shù)組 【 例 】 輸入 10 設(shè)置一個(gè)數(shù)組 a,放置學(xué)生的成績。編寫程序如下: Option Base 1 Private Sub Command1_Click() Dim a(10) As Integer Dim i, sum As Integer sum = 0 For i = 1 To 10 a(i) = InputBox(″輸入整數(shù) :″) Print a(i)。 sum = sum + a(i) Next i Print Print ″Sum=″。 sum End Sub 其中,語句 “ Option Base 1”的作用是使數(shù)組下標(biāo)的下界為 1。在循環(huán)中逐一輸入學(xué)生的成績,將學(xué)生的成績分別保存在 a(1)、 a(2)、 … 、 a(10)中。每輸入一個(gè)學(xué)生的成績,就把它累加到 sum中。最后求出平均成績 avg。圖 。 圖 【 例 】 數(shù)組中有 10個(gè)數(shù)。要求按由小到大的順序?qū)?shù)組中的數(shù)據(jù)進(jìn)行排序,并將排序前后的數(shù)據(jù) 這是排序的問題。排序的方法有很多種,這里使用 設(shè)有 10個(gè)數(shù),存放在數(shù)組 a中。每個(gè)數(shù)分別用 a(1)、a(2)、 … 、 a(10)表示,如圖 。每個(gè)格子存放一個(gè)數(shù)據(jù),格子上面注明數(shù)組元素名。 圖 選擇法排序的思路: 先用 a(1)與 a(2)比較;如果a(1) a(2),則記錄下比較小的數(shù)據(jù)元素 a(2)的下標(biāo);否則不做處理;接著再用當(dāng)前 a(1)、 a(2)中的最小數(shù)與 a(3)~ a(10)進(jìn)行比較,記錄下這些數(shù)中最小數(shù)的下標(biāo);完成 a(1)到 a(10)的比較后,根據(jù)記錄的最小數(shù)的下標(biāo),將 a(1)與最小的數(shù)互換位置,把第一輪比較得到的最小數(shù)放到 a(1)中;然后,從第二個(gè)數(shù)到第 10個(gè)數(shù)中選擇最小的數(shù)放到第二個(gè)數(shù)組元素的位置;依次進(jìn)行所有數(shù)據(jù)的比較和換位,即完成了數(shù)據(jù)的排序。 為了記錄數(shù)據(jù)元素的位置,設(shè)置一個(gè)變量 k,用來“ 指向 ” 某一數(shù)組元素,開始時(shí)指向 a(1),即 k=1。以后,每次比較之后,哪個(gè)數(shù)最小, k就指向哪個(gè)數(shù)。例如,先將 a(1)與 a(2)比較, 105,即a(1)a(2),此時(shí)用 k指向 a(2)。表示在已經(jīng)比較過的a(1)與 a(2)兩個(gè)數(shù)中, a(2)的數(shù)最小。接著,用 a(2)與 a(3)進(jìn)行比較,比較的結(jié)果 530, 5 是當(dāng)前比較過的 3個(gè)數(shù)中最小的數(shù),其數(shù)組元素的下標(biāo)仍為 2,即 k仍是 2。如此反復(fù),每次都以 a(k)與未被比較過的數(shù)進(jìn)行比較,直到全部數(shù)據(jù)都與 a(k)比較過為止。對(duì)于圖 ,第一輪比較完成后,找到 10個(gè)數(shù)中的最小數(shù) a(k),即 a(5)。將 a(1)與 a(k)的值對(duì)換,將最小的數(shù)換到 a(1) 比較完第一輪后,除 a(1)與 a(k)兩個(gè)數(shù)的位置發(fā)生變化外,其余 8個(gè)數(shù)的位置沒有變化。在第二輪比較中,先令 k=2(即從第二個(gè)數(shù)開始比較),將 a(k)分別與 a(3) ~ a(10)比較,找出 9個(gè)數(shù)中最小的數(shù),并將其換到 a(2) 實(shí)現(xiàn)上述排序算法的程序如下: Option Base 1 Private Sub cmdSort_Click() Dim a As Variant a = Array(10, 5, 30, 45, 2, 9, 52, 19, 52, 3) ′ For i = 1 To 9 k = i For j = i + 1 To 10 If a(j) a(k) Then k = j Next j If k i Then tmp = a(k) a(k) = a(i) a(i) = tmp End If Next i End Sub 程序中的語句 “ Option Base 1”是將數(shù)組的下標(biāo)設(shè)置為從 1開始,默認(rèn)情況下 ,數(shù)組下標(biāo)從 0 語句 Dim a As Variant定義了一個(gè)變體類型變量 a。a沒有定義維數(shù),也沒有具體的變量類型,作為數(shù)組變量使用,因此稱為數(shù)組變量。數(shù)組變量可以用array函數(shù)賦初值。其格式為: 數(shù)組變量名 = Array(數(shù)組元素值 ) 定義子程序的一般格式如下: [Public|Private][Static] Sub 子程序名( [形參表列 ]) 〈 語句 End Sub 子程序 子程序的定義 Sub和 End Sub是一個(gè)子程序的開始與結(jié)束標(biāo)志。 Public或 Private表示子程序是 “ 公用 ” 的還是 “ 私用 ” 的。 Private過程能在本窗體或模塊中被調(diào)用。Public過程可在整個(gè)程序范圍內(nèi)被調(diào)用(但需要指明該子程序所在的對(duì)象名,如果在窗體 Form1中定義了一個(gè)子程序 sub1,在窗體 Form2中調(diào)用它,應(yīng)該用 Call Static表示該過程中的局部變量是靜態(tài)變量,在過 一般格式中的 “ ( [形參表列 ]) ” 的具體形式是([變量名 [As 類型 ][,變量名 [As類型 ]]… )。 建立一個(gè)子程序有兩種方法,一是進(jìn)入代碼窗口,在左側(cè)顯示對(duì)象名的下拉框中選擇 “ 通用 ” ,在右側(cè)顯示過程的下拉框中選擇 “ 聲明 ” ,然后鍵入Sub及子程序名。按 Enter鍵后, Visual Basic系統(tǒng)會(huì)自動(dòng)加上 End Sub與子程序名后的一對(duì)括號(hào),此時(shí)便可輸入子程序語句;二是進(jìn)入代碼窗口后,單擊主窗口中的 “ 工具 ” 菜單,選擇 “ 添加過程 ” 后系統(tǒng)會(huì)打開一個(gè)對(duì)話框 (如圖 ),然后按對(duì)話框中的提示輸入相應(yīng)的內(nèi)容。 圖 例如,要建立一個(gè)名為 FindLeap的子程序,在 “ 名稱 ” 框中輸入子程序名 FindLeap,在 “ 類型 ” 中選擇 “ 子程序 ” ,在 “ 范圍 ” 中選擇 “ 公有的 ” ,確認(rèn)后退出對(duì)話框,系統(tǒng)自動(dòng)給出子程序的頭和尾(見圖 ),此時(shí)便可輸入子程序的具體內(nèi)容。 【 例 】 設(shè)計(jì)一個(gè)程序,在窗體上畫一個(gè)命令按鈕,當(dāng)單擊命令按鈕時(shí),調(diào)用一個(gè)子程序,在窗體上顯示出 2022年到 2050年之間所有的閏年,如圖 圖 圖 閏年的條件如下: ( 1)能被 4整除,但不能被 100整除的年份是閏年; ( 2)能被 100整除,又能被 400整除的年份是閏年。 運(yùn)行程序,在命令按鈕的單擊事件過程中,先在窗體上顯示一行提示信息,然后,調(diào)用子程序FindLeap。 Private Sub cmdLeap_Click() Print ″2022年至 2050年之間的閏年: ″ Call FindLeap End Sub FindLeap子程序的功能是,按照閏年的判斷條件從2022年到 2050年逐年判斷是否滿足閏年的條件,如果滿足條件,就使 leap=1,否則使 leap=0。在完成對(duì)是否為閏年的判斷后,根據(jù) leap的值進(jìn)行判斷,如果是閏年( leap=1),就輸出該年份。 Public Sub FindLeap() n = 0 Y = 2022 Do Until Y 2050 If Y Mod 4 = 0 Then If (Y Mod 100) 0 Then leap = 1 ElseIf (Y Mod 400) = 0 Then leap = 1 Else leap = 0 End If Else leap = 0 End If If leap = 1 Then Print Y。 n = n + 1 If n Mod 5 = 0 Then Print End If Y = Y + 1