版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6數(shù)組
利用數(shù)組可以有效地存儲(chǔ)和處理成批數(shù)據(jù)
本章主要內(nèi)容數(shù)組的概念數(shù)組的聲明和應(yīng)用動(dòng)態(tài)數(shù)組
ForEach...Next循環(huán)語句控件數(shù)組程序舉例
第6章數(shù)組
6.1.1數(shù)組與數(shù)組元素
簡(jiǎn)單變量用一個(gè)變量名標(biāo)識(shí),不同的變量使用不同的變量名表示。處理成批的數(shù)據(jù)時(shí),必須使用數(shù)組來處理表示100個(gè)學(xué)生的成績(jī),采用簡(jiǎn)單變量來表示:
s1,s2,s3,…s99,s100
采用數(shù)組來表示:t(0),t(1),t(2),…t(98),t(99)
t(k)(k=0,1,2,…99)為數(shù)組元素(或稱下標(biāo)變量),它表示第k個(gè)學(xué)生的成績(jī),k稱為下標(biāo)變量的下標(biāo)數(shù)組的一個(gè)主要特點(diǎn)是通過下標(biāo)(相當(dāng)于索引)來引用數(shù)組元素
6.1數(shù)組的概念
例如計(jì)算這100個(gè)學(xué)生成績(jī)的平均分,可用:
S=0
Fork=0To99
S=S+t(k)
‘累加分?jǐn)?shù)
Nextk
Aver=S/100
‘求平均分
數(shù)組是一組按一定順序排列的數(shù)據(jù)的集合
例如,學(xué)生成績(jī)T=[t(0),t(1),…t(99)]是一個(gè)數(shù)組
三元一次方程組的系數(shù)矩陣
a11a12a13
A=a21a22a23
a31a31a33
也是一個(gè)數(shù)組
數(shù)組名(不能與簡(jiǎn)單變量同名);數(shù)組類型
又稱有序的變量——下標(biāo)變量
默認(rèn)情況下,下標(biāo)從0開始,
optionbasen必須在定義數(shù)組前使用。
例如,由一行共5個(gè)元素組成的數(shù)組x,它的5個(gè)下標(biāo)變量為:
x(0)x(1)x(2)x(3)x(4)
由三行四列元素組成的數(shù)組y,它的12個(gè)下標(biāo)變量可表示為:
y(0,0)y(0,1)y(0,2)y(0,3)
y(1,0)y(1,1)y(1,2)y(1,3)
y(2,0)y(2,1)y(2,2)y(2,3)
下標(biāo)變量與簡(jiǎn)單變量具有基本相同的性質(zhì)和作用數(shù)組元素
下標(biāo)用來標(biāo)明該下標(biāo)變量在數(shù)組中的位置下標(biāo)可以是常數(shù)值,也可以是變量(包括下標(biāo)變量)或數(shù)值表達(dá)式
例如:若x(2)=10,k=2,則y(x(2))就是y(10),y(x(2)+k)就是y(12)
只要有規(guī)則地改變下標(biāo)值,就可以很方便地使下標(biāo)變量(如a(i))成為所需要的具體下標(biāo)變量
數(shù)組的維數(shù)6.1.2下標(biāo)和數(shù)組的維數(shù)6.2.1數(shù)組聲明語句
使用數(shù)組之前,一般需要定義數(shù)組,以便讓系統(tǒng)分配相應(yīng)的存儲(chǔ)單元。格式為:
Dim數(shù)組名([下界1to]上界1[,[下界2to]上界2…])[As數(shù)據(jù)類型]
功能:指定數(shù)組的維數(shù)、各維的上下界和數(shù)據(jù)類型
舉例:
dima%(10),b!(2t08),c#(15),b(3,4)asLongDimSum(10)AsLong‘下標(biāo)號(hào)從0~10,共11個(gè)元素
DimAry(1to20)AsInteger‘下標(biāo)號(hào)從1~20,共20個(gè)元素
Dimd(1to5,1to10)AsDouble‘定義二維數(shù)組
dimc(-2to2)asstring*20
還可以使用Public、Static、Private等語句來聲明數(shù)組
6.2數(shù)組的聲明和應(yīng)用數(shù)組下標(biāo)測(cè)試函數(shù)Ubound(數(shù)組名[,維])Lbound(數(shù)組名[,維])Dimy(1to12,5to20,-3to6)PrintLbound(y,1),Ubound(y,1)PrintLbound(y,2),Ubound(y,2)PrintLbound(y,3),Ubound(y,3)
設(shè)定下界的方法
OptionBase1‘設(shè)定下界為1
DimData(10)AsSingle‘下標(biāo)號(hào)從1~10
6.2.2Array函數(shù)
使用Array函數(shù)可以為數(shù)組元素賦值
示例
DimDAsVariant‘定義數(shù)組名(變體類型)
D=Array(1,2,3,4)
執(zhí)行結(jié)果:1→D(0),2→D(1),3→D(2),4→D(3)
數(shù)組刷新語句可以作用于動(dòng)態(tài)數(shù)組和靜態(tài)數(shù)組
格式:
Erase數(shù)組名[,數(shù)組名]…
功能:該語句用來清除靜態(tài)數(shù)組的內(nèi)容,或者釋放動(dòng)態(tài)數(shù)組占用的內(nèi)存空間例如:
DimArray1(20)AsIntegerDimArray2()AsSingle
ReDimArray2(9,10)……EraseArray1,Array2
對(duì)靜態(tài)數(shù)組,Erase語句將數(shù)組重新初始化;對(duì)動(dòng)態(tài)數(shù)組,Erase語句將釋放動(dòng)態(tài)數(shù)組所使用的內(nèi)存
6.3.2
數(shù)組刷新語句(Erase)Erase
數(shù)組名[,數(shù)組名],……重新對(duì)靜太數(shù)組進(jìn)行初始化,數(shù)值置0,字符為空字符串,而原數(shù)組存在。釋放動(dòng)態(tài)數(shù)組存儲(chǔ)空間,原有數(shù)組不再存在。變體數(shù)組,每個(gè)元素重新置為空。數(shù)組的引用和賦值:OptionBase1DimB1AsVariantB1=Array(89,96,81,67,79,90,63,85,95,83)
y=B1(3)C=B1(5)+B1(7)數(shù)組的引用下標(biāo)不能越界數(shù)組的賦值:使用循環(huán)語句:
dimk(10)Fork=0To10
t(k)=2*k+1
Nextk
Dimd(5)AsIntegerFori=1To5'輸入成績(jī)
d(i)=Val(InputBox("請(qǐng)輸入第"&Str(i)&_"個(gè)學(xué)生的成績(jī)","輸入成績(jī)"))
Nexti數(shù)組輸出Fori=1To5Printd(i);Nexti
與前面的循環(huán)語句For...Next類似,都是用來執(zhí)行指定重復(fù)次數(shù)的循環(huán)。但ForEach...Next語句專門作用于數(shù)組或?qū)ο蠹现械拿恳怀蓡T。語法格式:
ForEach成員In數(shù)組名
循環(huán)體
[ExitFor]
Next成員
“成員”是一個(gè)Variant變量,它實(shí)際上代表數(shù)組中每一個(gè)元素本語句可以對(duì)數(shù)組元素進(jìn)行讀取、查詢或顯示,它所重復(fù)執(zhí)行的次數(shù)由數(shù)組中元素的個(gè)數(shù)確定在不知道數(shù)組中元素的數(shù)目時(shí)非常有用
6.4
ForEach...Next循環(huán)語句PrivateSubForm_Load()Dima(1To10)AsLong,sumAsLong,tAsLongDimnAsIntegerShowt=1Forn=1To10t=t*na(n)=tNextnsum=0ForEachxInasum=sum+xNextxPrint"1!+2!+3!+……10!=";sumEndSub輸出結(jié)果:
1!+2!+3!+…+10!=4037913例6.6求1!+2!+…+10!的值
兩種形式的數(shù)組:靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組靜態(tài)數(shù)組是指數(shù)組元素的個(gè)數(shù)固定不變;動(dòng)態(tài)數(shù)組的元素個(gè)數(shù),在程序運(yùn)行時(shí)可以改變動(dòng)態(tài)數(shù)組可以在運(yùn)行過程中改變數(shù)組的大小,提高存儲(chǔ)區(qū)的使用效率
6.3.1建立動(dòng)態(tài)數(shù)組
建立動(dòng)態(tài)數(shù)組的步驟:
第一步:聲明一個(gè)沒有下標(biāo)(或稱空維數(shù))的數(shù)組為動(dòng)態(tài)數(shù)組第二步:在過程中用ReDim語句重新定義帶下標(biāo)的動(dòng)態(tài)數(shù)組
ReDim語句格式:
ReDim[Preserve]數(shù)組名([下界1T0]上界1[,[下界2T0]上界2…])[As數(shù)據(jù)類型]
功能:重新定義動(dòng)態(tài)數(shù)組,按定義的上下界重新分配存儲(chǔ)單元
6.3
動(dòng)態(tài)數(shù)組
聲明F為動(dòng)態(tài)數(shù)組的示例:
PrivateSubCommand1_Click()DimF()AsInteger‘聲明一個(gè)整型動(dòng)態(tài)數(shù)組
……
Size=20
ReDimF(Size)……EndSub
每次執(zhí)行ReDim時(shí),系統(tǒng)會(huì)清除指定數(shù)組的內(nèi)容
若采用:ReDimPreserveF(Size)
則能保留數(shù)組中原有的數(shù)據(jù)PrivateSubForm_Load()Dima()AsIntegerShow
ReDima(800)k=0Forx=200To600Step3IfxMod8=0Thenk=k+1a(k)=xEndIfNextx
ReDimPreservea(k)Fori=1TokPrinta(i)NextiEndSub例6.5
ReDim語句應(yīng)用示例
兩類數(shù)組:一般數(shù)組和控件數(shù)組
6.5.1控件數(shù)組的概念
控件數(shù)組是一組具有相同名稱、類型和事件過程的控件例如,Label1(0),Label1(1),Label1(2),……
但Label1,Label2,Label3,……不是控件數(shù)組控件數(shù)組具有以下特點(diǎn):
(1)相同的控件名稱(即Name屬性);
(2)控件數(shù)組中的控件具有相同的一般屬性;
(3)所有控件共用相同的事件過程。以下標(biāo)索引值(Index)來標(biāo)識(shí)各個(gè)控件,第一個(gè)下標(biāo)索引號(hào)為06.5控件數(shù)組6.5.2控件數(shù)組的建立建立控件數(shù)組有三種方法:
(1)給控件起相同的名稱
(2)將現(xiàn)有的控件復(fù)制并粘貼到窗體等上面
(3)將控件的Index屬性設(shè)置為非Null數(shù)值
6.5.3控件數(shù)組的使用
例6.7
按圖6.4設(shè)計(jì)窗體,其中一組(共5個(gè))單選按鈕構(gòu)成控件數(shù)組,要求當(dāng)單擊某個(gè)單選按鈕時(shí),能夠改變文本框中文字的大小控件數(shù)組設(shè)計(jì)步驟:
(1)設(shè)計(jì)控件數(shù)組Option1,其中包含5個(gè)單選按鈕對(duì)象
具體操作方法:
①畫出第一個(gè)單選按鈕控件,名稱采用默認(rèn)的Option1。此時(shí)該控件處于選定狀態(tài)。
②單擊工具欄上的“復(fù)制”按鈕(或按Ctrl+C)。③單擊工具欄上的“粘貼”按鈕(或按Ctrl+V),此時(shí)系統(tǒng)彈出一個(gè)如圖6.5所示的對(duì)話框單擊“是”,就建立一個(gè)控件數(shù)組元素,其Index屬性為1,而已畫出的第一個(gè)控件的Index屬性值為0。通過鼠標(biāo)拖放可以調(diào)整新控件的位置
④繼續(xù)單擊“粘貼”按鈕(或按Ctrl+V)和調(diào)整控件位置,可得到控件數(shù)組中的其他三個(gè)控件,其Index屬性值分別為2,3和4(即從上而下為0,1,2,3,4)
⑤設(shè)置控件數(shù)組各元素(從上而下)的Caption屬性分別為10,14,18,24和28
(2)建立一個(gè)文本框Text1,其Text屬性設(shè)置為“控件數(shù)組的使用”。再建立一個(gè)標(biāo)簽,其Caption屬性為“字號(hào)控制”
(3)編寫程序代碼PrivateSubForm_Load()Option1(0).Value=True'選定第一個(gè)單選按鈕
Text1.FontSize=10'設(shè)定文本框中的字號(hào)EndSubPrivateSubOption1_Click(IndexAsInteger)SelectCaseIndex'系統(tǒng)自動(dòng)返回Index值
Case0Text1.FontSize=10Case1Text1.FontSize=14Case2Text1.FontSize=18Case3Text1.FontSize=24Case4Text1.FontSize=28EndSelect
EndSub
例6.1
輸入某小組5個(gè)同學(xué)的成績(jī),計(jì)算總分和平均分(取小數(shù)后一位)
本例利用InputBox函數(shù)來輸入成績(jī),輸入完畢后經(jīng)過計(jì)算,再采用Print直接在窗體上輸出結(jié)果
6.2.3
數(shù)組的應(yīng)用
PrivateSubForm_Load()Dimd(5)AsIntegerDimiAsInteger,totalAsSingle,averageAsSingleShowFori=1To5'輸入成績(jī)
d(i)=Val(InputBox("請(qǐng)輸入第"&Str(i)&_"個(gè)學(xué)生的成績(jī)","輸入成績(jī)"))
Nextitotal=0Fori=1To5'計(jì)算總分和平均分
total=total+d(i)Nextiaverage=total/5Print"總分:"&totalPrint"平均分:"&Format(average,"##.0")EndSub
程序中,先通過Dim語句為數(shù)組d定義維數(shù)及下標(biāo)范圍,也即為數(shù)組安排一塊連續(xù)的內(nèi)存存儲(chǔ)區(qū),但這并不意味著內(nèi)存里該數(shù)組已建立了應(yīng)有的內(nèi)容本例中輸入數(shù)組中的數(shù)據(jù)是由InputBox函數(shù)來實(shí)現(xiàn)的,共循環(huán)了五次,輸入的五個(gè)數(shù)依次賦值給下標(biāo)變量d(1)~d(5)
建立了數(shù)組中的數(shù)據(jù)后,就可以按要求進(jìn)行處理
(1)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性
例6.2
輸入10名學(xué)生的成績(jī),求出最高分和最低分功能要求:通過Array函數(shù)輸入10個(gè)分?jǐn)?shù);單擊“查找”按鈕(Command2)后,開始查找最高分和最低分,找到后顯示在標(biāo)簽Label1上
OptionBase1DimscoreAsVariantPrivateSubForm_Load()Label1.Caption="單擊“查找”按鈕開始查找最高分和最低分"
score=Array(89,96,81,67,79,90,63,85,95,83)
EndSub
(2)編寫程序代碼
PrivateSubCommand1_Click()DimmaxAsInteger,minAsIntegermax=score(1)'設(shè)定初值
min=score(1)Fori=2To10Ifmax<score(i)Then'找最高分
max=score(i)EndIfIfmin>score(i)Then'找最低分
min=score(i)EndIfNexti
'Chr(13)起換行作用
Label1.Caption="最高分:"+Str(max)+_Chr(13)+"最低分:"+Str(min)
EndSub例6.3分別計(jì)算5個(gè)學(xué)生和3門課的平均分
某學(xué)習(xí)小組有5名學(xué)生,成績(jī)?nèi)绫?.1所示
分析:用一個(gè)二維數(shù)組a(5,3)來描述。程序中設(shè)置兩重循環(huán),用以實(shí)現(xiàn)每行和每列上的累加。本例采用賦值語句來輸入學(xué)生成績(jī),并采用Print直接在窗體上輸出結(jié)果
r=1c=1,2,3r=2c=1,2,3r=3c=1,2,3r=4c=1,2,3r=5c=1,2,3求5個(gè)學(xué)生的平均分
下標(biāo)使用情況
OptionBase1PrivateSubForm_Load()Dima(5,3)AsIntegerDimrAsInteger,cAsInteger,sAsIntegerk=Array("數(shù)學(xué)","英語","計(jì)算機(jī)")'輸入課程名
a(1,1)=69:a(1,2)=89:a(1,3)=74'輸入學(xué)生成績(jī)
a(2,1)=94:a(2,2)=80:a(2,3)=90a(3,1)=57:a(3,2)=62:a(3,3)=73a(4,1)=98:a(4,2)=94:a(4,3)=90a(5,1)=73:a(5,2)=76:a(5,3)=63例6.3
ShowPrint"學(xué)生","平均分“
'輸出20個(gè)減號(hào)“-”
PrintString(20,"-")Forr=1To5s=0'累加前清0
Forc=1To3
'累加同一行數(shù)據(jù)
s=s+a(r,c)NextcPrintr,Format(s/3,"##.0")NextrPrint
Print"課程","平均分"
PrintString(20,"-")Forc=1To3s=0Forr=1To5
'累加同一列數(shù)據(jù)
s=s+a(r,c)NextrPrintk(c),Format(s/5,"##.0")NextcEndSub
程序運(yùn)行結(jié)果
解題方法:
(1)利用Int(91*Rnd+10)產(chǎn)生值為10到100的隨機(jī)整數(shù)
使用Randomize得到不同的隨機(jī)數(shù)序列
(2)按值從小到大進(jìn)行排序。排序方法:
將10個(gè)數(shù)放入數(shù)組a中,對(duì)下列下標(biāo)變量進(jìn)行排序處理:
a(1),a(2),a(3),…,a(10)
①?gòu)倪@10個(gè)下標(biāo)變量中,選出最小值,通過交換把該值存入a(1)中②除a(1)之外(a(1)已存放最小值),從其余9個(gè)下標(biāo)變量中選出最小值(即10個(gè)數(shù)中的次小值),通過交換把該值存入a(2)中
③選出a(3)~a(10)中的最小值,通過交換,把該值存入a(3)中
④重復(fù)上述處理,至a(8),可使a(1)~a(8)按小到大排列
⑤第9次處理,選出a(9)及a(10)中的最小值,通過交換把該值存入a(9)中,此時(shí)a(10)存放的就是最大值
例6.4
隨機(jī)產(chǎn)生十個(gè)10~100的整數(shù),用“選擇排序法”按值從小到大順序排序,最后輸出結(jié)果排列要求
小大示例:
a(1)a(2)a(3)a(4)
906465591.a(1)與a(2)~a(4)比較,選出最小值,結(jié)果
599065642.a(2)與a(3)~a(4)比較,選出次小值,結(jié)果
596490653.a(3)與a(4)比較,選出較小值,結(jié)果
59646590
i=1j=2,3,4i=2j=3,4i=3j=4Fori=1to3Forj=i+1to4……NextjNexti程序結(jié)構(gòu)完成上述比較及排序處理過程,可以采用兩重循環(huán)結(jié)構(gòu),外循環(huán)的循環(huán)變量i從1到9,共循環(huán)九次;內(nèi)循環(huán)的循環(huán)變量j從i+1到10。
本例采用默認(rèn)的用戶界面,所需數(shù)據(jù)由隨機(jī)函數(shù)產(chǎn)生,處理后結(jié)果信息通過Print方法直接輸出在窗體上。
PrivateSubForm_Load()ShowRandomizeDima(1To10)AsIntegerPrint"原始數(shù)據(jù):"
Fori=1To10'產(chǎn)生10個(gè)隨機(jī)數(shù)
a(i)=Int(91*Rnd+10)Printa(i);Nexti
(3)程序結(jié)構(gòu)
Print:PrintFori=1To9Forj=i+1To10Ifa(i)>a(j)Thent=a(i):a(i)=a(j):a(j)=t'交換位置
EndIfNextjNextiPrint"排序結(jié)果:"
Fori=1To10Printa(i);NextiEndSub
改寫中間程序段“Fori=1To9”~“Nexti”(共7個(gè)程序行)
Fori=1To9k=i‘k用來記錄每次選擇的最小值的下標(biāo)
Forj=i+1To10Ifa(k)>a(j)Thenk=jEndIfNextjt=a(k):a(k)=a(i):a(i)=t'交換位置
Nexti
變量k記錄每一次選出的最小值的下標(biāo),在本次比較結(jié)束后,使a(i)與a(k)一次換位即可
6.6
程序舉例
例6.8查找考場(chǎng)教室號(hào)
某課程統(tǒng)考憑準(zhǔn)考證入場(chǎng),考場(chǎng)教室安排如表6.2。編制程序,查找準(zhǔn)考證號(hào)碼所對(duì)應(yīng)的教室號(hào)碼
(1)分析:為便于查找,通過二維數(shù)組rm建立這兩種號(hào)碼對(duì)照表。數(shù)組rm由Form_Load事件過程來建立,它的每一行存放了一個(gè)教室資料(包含準(zhǔn)考證號(hào)碼范圍和教室號(hào)碼)。當(dāng)判斷到某個(gè)給定準(zhǔn)考證號(hào)碼落在某一行的準(zhǔn)考證號(hào)碼范圍內(nèi)時(shí),則該行中的教室號(hào)碼為所求
(2)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性
(3)編寫程序代碼
功能要求:用戶在文本框Text1中輸入準(zhǔn)考證號(hào)碼,單擊“查找”按鈕(Command1)后,則查找出對(duì)應(yīng)的教室,并將教室號(hào)碼輸出在文本框Text2中
Dimrm(6,3)AsIntegerPrivateSubForm_Load()
‘輸入數(shù)組數(shù)據(jù)
rm(1,1)=2101:rm(1,2)=2147:rm(1,3)=102rm(2,1)=1741:rm(2,2)=1802:rm(2,3)=103rm(3,1)=1201:rm(3,2)=1287:rm(3,3)=114rm(4,1)=3333:rm(4,2)=3387:rm(4,3)=209rm(5,1)=1803:rm(5,2)=1829:rm(5,3)=305rm(6,1)=2511:rm(6,2)=2576:rm(6,3)=306
EndSub
PrivateSubCommand1_Click()DimnoAsInteger,flagAsIntegerflag=0'查找標(biāo)記,0表示未找到
no=Val(Text1.Text)Fori=1To6Ifno>=rm(i,1)Andno<=rm(i,2)ThenText2.Text=rm(i,3)'顯示教室號(hào)碼
flag=1'1表示找到
ExitForEndIfNextiIfflag=0ThenText2.Text="無此準(zhǔn)考證號(hào)碼"
EndIfText1.SetFocus‘設(shè)置焦點(diǎn)
EndSub
某學(xué)習(xí)小組10名學(xué)生的成績(jī)情況如表6.3所示,現(xiàn)要求采用折半查找法,通過學(xué)號(hào)查詢學(xué)生成績(jī)
(1)分析:折半查找法也稱對(duì)半查找法,是一種效率較高的查找方法。對(duì)于大型數(shù)組,它的查找速度比順序查找法(例6.8采用的是順序查找法)快得多在采用折半查找法之前,要求將數(shù)組按查找關(guān)鍵字(如本例的學(xué)號(hào))排好序(從大到小或小到大)例6.9
采用折半查找法查詢學(xué)生成績(jī)
·先從數(shù)組中間開始比較,判別中間的那個(gè)元素是不是要找的數(shù)據(jù):
是,則查找成功否,若被查找的數(shù)據(jù)是在該數(shù)組的上半部,則從上半部的中間繼續(xù)查找,否則從下半部的中間繼續(xù)查找
·照此進(jìn)行下去,不斷縮小查找范圍
·至最后,因找到或找不到而停止查找
對(duì)于n個(gè)數(shù)據(jù),若用變量Top、Bott分別表示每次“折半”的首位置和末位置,則中間位置M為
M=Int((Top+Bott)/2)這樣就將[Top,Bott]分成兩段,即[Top,M-1]和[M+1,Bott],
若要找的數(shù)據(jù)小于由M指示的數(shù)據(jù),則該數(shù)據(jù)在[Top,M-1]范圍內(nèi),反之,則在[M+1,Bott]范圍內(nèi)
折半查找法的過程
折半查找法的過程學(xué)號(hào)h()1201120212031205120612071209121012111215先排好序數(shù)學(xué)d(x,1)語文d(x,2)9286787183746775715562809883998057678078m=Int((Top+Bott)/2)要找的學(xué)號(hào)Noh(m)=m為所求m<
Bott=m-1>Top=m+1
Top=1Bott=10
(2)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性
(3)編寫程序代碼
Dimh(10)AsInteger,d(10,2)AsInteger
PrivateSubForm_Load()
'學(xué)號(hào)存放在數(shù)組h()中
h(1)=1201:h(2)=1202:h(3)=1203h(4)=1205:h(5)=1206:h(6)=1207h(7)=1209:h(8)=1210:h(9)=1211:h(10)=1215'成績(jī)存放在數(shù)組d(,)中
d(1,1)=92:d(1,2)=86d(2,1)=78:d(2,2)=71d(3,1)=83:d(3,2)=74d(4,1)=67:d(4,2)=75d(5,1)=71:d(5,2)=55d(6,1)=62:d(6,2)=80d(7,1)=98:d(7,2)=83d(8,1)=99:d(8,2)=80d(9,1)=57:d(9,2)=67d(10,1)=80:d(10,2)=78
EndSub
PrivateSubCommand1_Click()DimnoAsInteger,flagAsIntegerDimmAsInteger,topAsInteger,bottAsIntegerflag=-1'置未找到標(biāo)志
top=1:bott=10'設(shè)定范圍
no=Val(Text1.Text)'取學(xué)號(hào)
Ifno<h(top)Orno>h(bott)Thenflag=-2'若超出學(xué)號(hào)范圍,置特殊標(biāo)志-2
EndIf
DoWhileflag=-1Andtop<=bott
m=(top+bott)/2'取中點(diǎn)
SelectCaseTrueCaseno=h(m)'找到
flag=m'置找到標(biāo)志
Text2.Text=h(m)Text3.Text=d(m,1)Text4.Text=d(m,2)Text5.Text=(d(m,1)+d(m,2))/2Caseno<h(m)'小于中間數(shù)據(jù)
bott=m-1'上半部
Caseno>h(m)'大于中間數(shù)據(jù)
top=m+1'下半部
EndSelectLoop
Ifflag<0Then'判是否找不到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能木屋裝配一體化工程合同4篇
- 2025年度教育集團(tuán)下屬學(xué)校副校長(zhǎng)長(zhǎng)期聘用合同
- 2025年度節(jié)能型車床設(shè)備采購(gòu)與節(jié)能評(píng)估合同4篇
- 2025版文化旅游合同協(xié)議
- 專業(yè)監(jiān)理裝修工程協(xié)議(2024年)3篇
- 2025版木材貿(mào)易公司信用擔(dān)保服務(wù)合同樣本4篇
- 二零二五版婚禮紀(jì)實(shí)攝影服務(wù)合同3篇
- 2025年度木屋裝飾裝修一體化合同4篇
- 2025版影視剪輯行業(yè)剪輯師勞務(wù)合同標(biāo)準(zhǔn)文本3篇
- 二零二五年度木質(zhì)包裝箱設(shè)計(jì)與木工班組制作協(xié)議4篇
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計(jì)與授權(quán)使用3篇
- 心肺復(fù)蘇課件2024
- 《城鎮(zhèn)燃?xì)忸I(lǐng)域重大隱患判定指導(dǎo)手冊(cè)》專題培訓(xùn)
- 湖南財(cái)政經(jīng)濟(jì)學(xué)院專升本管理學(xué)真題
- 全國(guó)身份證前六位、區(qū)號(hào)、郵編-編碼大全
- 2024-2025學(xué)年福建省廈門市第一中學(xué)高一(上)適應(yīng)性訓(xùn)練物理試卷(10月)(含答案)
- 《零售學(xué)第二版教學(xué)》課件
- 廣東省珠海市香洲區(qū)2023-2024學(xué)年四年級(jí)下學(xué)期期末數(shù)學(xué)試卷
- 房地產(chǎn)行業(yè)職業(yè)生涯規(guī)劃
- 江蘇省建筑與裝飾工程計(jì)價(jià)定額(2014)電子表格版
- MOOC 數(shù)字電路與系統(tǒng)-大連理工大學(xué) 中國(guó)大學(xué)慕課答案
評(píng)論
0/150
提交評(píng)論