




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Visual
Basic程序設(shè)計第5章 數(shù)組和自定義類型數(shù)組的概念數(shù)組的基本操作自定義類型及其數(shù)組綜合應(yīng)用常見錯誤Visual
Basic程序設(shè)計5.1
數(shù)組的概念5.1.1數(shù)組的概念1.引例例5.1求100個學(xué)生的平均成績,并統(tǒng)計高于平均分的人數(shù)。用簡單變量和循環(huán),求平均成績程序段如下:aver
=
0For
i
=
1
To
100mark=InputBox("輸入學(xué)生成績")aver=aver+markNext
iaver
=
aver
/
100由于循環(huán)體內(nèi)變量mark只能放一個學(xué)生的成績,無法統(tǒng)計高于平均分的人數(shù)。若用簡單變量保存100個學(xué)生的成績,則需定義100個變量和使用100句輸入語句。Visual
Basic程序設(shè)計用數(shù)組解決問題的程序如下:Dim
mark(99)As
Integer"聲明數(shù)組markDim
ave!,n%,i%ave
=
0For
i=0
To
99
"輸入成績,求分數(shù)和mark(i)=InputBox("輸入學(xué)生的成績")
ave=ave+mark(i)Next
i"求100人的平均分ave
=
ave
/
100n
=
0For
i
=
0
To
99"統(tǒng)計高于平均分的人數(shù)If
mark(i)
>
ave
Then
n
=
n
+
1Next
iMsgBox("平均分:"&
ave
&"高于平均分人數(shù):"&
n)Visual
Basic程序設(shè)計2.數(shù)組的概念概念:在VB中,把一組相互關(guān)系密切的數(shù)據(jù)放在一起并用一個統(tǒng)一的名字作為標(biāo)志,就是數(shù)組。一般來說,數(shù)組就是一組相同類型的變量的集合。數(shù)組的分類:按數(shù)組的大小分為定長數(shù)組和變長數(shù)組。按元素的類型分為數(shù)值型、字符型、日期型、變體數(shù)組等。按數(shù)組的維數(shù)分為一維數(shù)組、二維數(shù)組、多維數(shù)組。按對象不同分為菜單對象數(shù)組和控件數(shù)組。數(shù)組必須先聲明后使用。聲明數(shù)組名、類型、維數(shù)和數(shù)組大小。使用數(shù)組元素時,下標(biāo)不能超出上下界范圍,下標(biāo)可以是整型的常數(shù)、變量、表達式,甚至是一個數(shù)組元素。Visual
Basic程序設(shè)計5.1.2
定長數(shù)組及聲明在聲明時確定了大小的數(shù)組稱為定長數(shù)組。定長數(shù)組從建立到消亡整個階段中數(shù)組的大小是固定的。定長數(shù)組的聲明形式:Dim 數(shù)組名(下標(biāo)1[,下標(biāo)2…])
[As類型]聲明了數(shù)組的名、維數(shù)、大小、類型(省略時為變體類型)維數(shù):幾個下標(biāo)為幾維數(shù)組,最多60維。下標(biāo):[下界To]上界省略下界為0,必須為常數(shù)。每一維大小:上界-下界+1數(shù)組大?。好恳痪S大小的乘積例:Dim
mark(1
to
100)
As
IntegerVisual
Basic程序設(shè)計Dim
lArray(
0
To
3,
0
To
4)
As
Long
共有
4×5個元素等價于:
Dim
lArray(3,
4)
As
Long注意:(1)下界缺省為0,也可重新定義數(shù)組的下界。例如:Option
Base
1錯誤的聲明:下標(biāo)是變量n
=Inputbox("輸入n"):Dim
x(n)As
Single在數(shù)組聲明中的下標(biāo)說明了數(shù)組的整體,即每維的大??;而在程序其他地方出現(xiàn)的下標(biāo)表示數(shù)組中的一個元素。兩者寫法形式相同,但意義不同。例如: Dim
x(10)
As
Integerx(10)=100"聲明了x數(shù)組有11個元素"對x(10)這個數(shù)組元素賦值Visual
Basic程序設(shè)計Private
Sub
Command1_Click()Dim
grade(1
To
10)
As
SingleDim
i%For
i
=
1
To
10grade(i)
=
int(Rnd()
*
101)Next
iFor
i
=
1
To
10Print
grade(i)Next
iEnd
Sub對數(shù)組的輸入與輸出Visual
Basic程序設(shè)計Private
Sub
Command2_Click()Dim
grade(1
To
10)
As
Single,
sum!,
avg!Dim
i%For
i
=
1
To
10grade(i)
=
int(Rnd()
*
101)Next
Isum
=
0!For
i
=
1
To
10sum
=
sum
+
grade(i)Next
iavg
=
sum
/
10Print
sum,
avgEnd
Sub計算總和和平均值Visual
Basic程序設(shè)計5.1.3變長數(shù)組及聲明變長數(shù)組指在聲明數(shù)組時未給出數(shù)組的大小(省略括號中的下標(biāo)),當(dāng)要使用它時,隨時用ReDim語句重新指出數(shù)組大小。建立變長數(shù)組要分兩步:用Dim語句聲明數(shù)組,但不能指定數(shù)組大小
Dim數(shù)組名()As數(shù)據(jù)類型用ReDim語句動態(tài)地分配元素個數(shù)ReDim數(shù)組名(下標(biāo)[,下標(biāo)2…])[As類型]例:Dim
s()As
SingleSub
Form_Load(
)…ReDim
s(4,8)…End
SubVisual
Basic程序設(shè)計定義變長數(shù)組大小注意:Dim是說明語句,可出現(xiàn)在程序的任何地方,而ReDim是執(zhí)行語句,只能在過程 中。在過程中可多次使用ReDim語句來改變數(shù)組的大小和維數(shù),但不能改變類型??稍赗eDim后加Preserve參數(shù)用來保留數(shù)組中的數(shù)據(jù),若使用Preserve參數(shù)后, 只能改變最后一維的大小。Dim語句中的下標(biāo)只能是常量,ReDim中的下標(biāo)可以是常量,也可以是有了確定值的變量或表達式。定長數(shù)組在程序編譯時分配存儲單元,變長數(shù)組在運行時分配存儲單元。Visual
Basic程序設(shè)計Option
ExplicitPrivate
Sub
Command1_Click()Dim
a%(),
i%,
j%ReDim
a(1
To
3,
1
To
4)For
i
=
1
To
3For
j
=
1
To
4a(i,
j)
=
Int(Rnd()
*
31
+
20)Next
jNext
iFor
i
=
1
To
3For
j
=
1
To
4Print
a(i,
j),Next
jPrintNext
iEnd
Sub變長數(shù)組例子1Visual
Basic程序設(shè)計Private
Sub
Command1_Click()Dim
a()
As
IntegerDim
i%,
j%ReDim
a(2,
3)For
i
=
0
To
2For
j
=
0
To
3a(i,
j)
=
i
*
4
+
jNext
jNext
iReDim
Preserve
a(2,
4)For
i
=
0
To
2For
j
=
0
To
4Print
a(i,
j),Next
jPrintNext
iEnd
Sub變長數(shù)組例子2Visual
Basic程序設(shè)計例5.2
編一個程序,顯示有n個數(shù)的非波那契數(shù)序列。Private
Sub
Command1_Click()Dim
fib()
As
LongDim
i%ReDim
fib(1
To
10)
As
Longfib(1)
=
1fib(2)
=
1For
i
=
3
To
10fib(i)
=
fib(i
-
1)
+
fib(i
-
2)Next
iFor
i
=
1
To
10
fib(i)
Next
iEnd
SubVisual
Basic程序設(shè)計計算5個人的平均分和高于平均分的人數(shù)。Private
Sub
Command2_Click()Dim
grade()
As
Single,
avg!Dim
i%,
overavg%ReDim
grade(1
To
5)For
i
=
1
To
5grade(i)=InputBox("請輸入第"&
i
&"個數(shù)")Next
iavg
=
0For
i
=
1
To
5avg
=
avg
+
grade(i)Next
iavg
=
avg
/
5overavg
=
0For
i
=
1
To
5If
grade(i)
>
avg
Then
overavg
=
overavg
+
1Next
iPrint
avg,
overavgEnd
SubVisual
Basic程序設(shè)計1.數(shù)組賦初值
(1)用循環(huán)Fori
=
1
To
10A(i)=i+3Next
i注意:利用Array對數(shù)組各元素賦值,聲明的數(shù)組是變長數(shù)組或連圓括號都可省的變量,并且其類型只能是Variant。數(shù)組的下界為零,也可由Option
Base決定。上界可由Array函數(shù)括號內(nèi)的參數(shù)個數(shù)決定,也可通過函數(shù)Ubound獲得。格式:UBound(數(shù)組名[,N])其中N指定返回哪一維的上界。(2)Array函數(shù)(只能是一維變體數(shù)組)Dim
b
As
Variantb
=
Array("abc",
"def",
"67")For
i
=
0
To
UBound(b)Print
b(i);
"
";Next
i5.2數(shù)組的基本操作Visual
Basic程序設(shè)計Private
Sub
Command1_Click()Dim
a
As
Variant,
b
As
VariantDim
i%a
=
Array(1,
2,
3,
4,
5)b
=
Array("aaa",
"bbb",
"ccc",
"ddd")For
i
=
0
To
UBound(a)Print
a(i)Next
iFor
i
=
LBound(b)
To
UBound(b)Print
b(i)Next
iEnd
Sub數(shù)組賦值示例Visual
Basic程序設(shè)計2.數(shù)組的整體賦值在VB6.0中,提供了數(shù)組直接對數(shù)組的賦值。例如:Dim
a()As
Variant,b()As
Variant,i%a
=
Array(1,
2,
3,
4,
5)b
=
aReDim
b(UBound(a))For
i
=
0
To
UBound(a)b(i)
=
a(i)Next
i注意:賦值號兩邊的數(shù)據(jù)類型必須一致。賦值號左邊的數(shù)組只能聲明為變長數(shù)組。如果賦值號左邊是一個定長數(shù)組,則數(shù)組賦值出錯。Visual
Basic程序設(shè)計Private
Sub
Command2_Click()Dim
a(1
To
5)
As
Integer,
i%Dim
b()
As
Integera(1)
=
1:
a(2)
=
2:
a(3)
=
3:
a(4)
=
4:
a(5)
=
5b
=
aFor
i
=
1
To
5Print
b(i)Next
iEnd
Sub數(shù)組間直接賦值Visual
Basic程序設(shè)計3.數(shù)組的輸入對于數(shù)組的輸入,可用文本框加些技術(shù)處理,也可用InputBox函數(shù)。例如:For
i=0
to
3for
j=0
to
4a(i,j)=InputBox(“輸入”&
i
&“,”&
j
&“的值”)next
jNext
iVisual
Basic程序設(shè)計4.數(shù)組的輸出例5.3
形成5×5的方陣,分別輸出方陣中各元素、上三角和下三角元素。方陣規(guī)律:第一行的元素為0~4,以后每一行是前一行對應(yīng)元素增加5,即s(i,j)=
i*5+j上三角規(guī)律:每一行的起始列與行號相同,只要控制內(nèi)循環(huán)的初值。用Tab函數(shù)或Space定位控制輸出的空格。Visual
Basic程序設(shè)計Private
Sub
Command1_Click()Dim
a(0
To
4,
0
To
4)
As
IntegerDim
i%,
j%For
i
=
0
To
4For
j
=
0
To
4a(i,
j)
=
i
*
5
+
jNext
jNext
iFor
i
=
0
To
4For
j
=
i
To
4Print
Tab(j
*
7
+
1);
a(i,
j);Next
jPrintNext
iEnd
SubVisual
Basic程序設(shè)計兩個3*3矩陣相加Private
Sub
Command1_Click()Dim
a(1
To
3,
1
To
3)
As
SingleDim
b(1
To
3,
1
To
3)
As
SingleDim
c(1
To
3,
1
To
3)
As
SingleDim
i%,
j%For
i
=
1
To
3For
j
=
1
To
3a(i,
j)
=
Rnd()
*
10:
b(i,
j)
=
Rnd()
*
10c(i,
j)
=
a(i,
j)
+
b(i,
j)Next
jNext
iFor
i
=
1
To
3For
j
=
1
To
3Print
c(i,
j),Next
jPrintNext
iEnd
SubVisual
Basic程序設(shè)計5.求數(shù)組和、最值、位置例5.4
求一維數(shù)組中各元素之和、最小數(shù)組元素,并將最小值數(shù)組元素與數(shù)組中第一個元素交換。求元素和:通過循環(huán)將每個元素進行累加。求數(shù)組中最小元素:假設(shè)第一個元素為最小,然后將該數(shù)與其他元素逐一比較,若發(fā)現(xiàn)小于最小值,就用新值替換最小值,同時記錄下標(biāo)值。求最大值的方法與求最小值相似。Visual
Basic程序設(shè)計Private
Sub
Command2_Click()Dim
a,
i%Dim
max,
maxia
=
Array(10,
1,
9,
3,
99,
12)For
i
=
0
To
UBound(a)Print
a(i)Next
imax
=
a(0):
maxi
=
0For
i
=
1
To
UBound(a)If
a(i)
>
max
Then
max
=
a(i):
maxi
=
iNext
iPrint
maxi,
maxEnd
Sub求若干個數(shù)的最大值及其所在下標(biāo)Visual
Basic程序設(shè)計4、逆序元素012345678926436187331937597669下標(biāo)初值下標(biāo)交換012345678969765937193387614326本章目Visual
Basic程序設(shè)計Private
Sub
Command1_Click()Dim
a(1
To
9)
As
Integer,
i%,
t%RandomizeFor
i
=
1
To
9a(i)
=
Int(Rnd()
*
10)Print
a(i),Next
iPrintFor
i
=
1
To
9
\
2t
=
a(i)a(i)
=
a(10
-
i)a(10
-
i)
=
tNext
iFor
i
=
1
To
9Print
a(i),
Next
iPrintEnd
Sub逆序一個數(shù)組Visual
Basic程序設(shè)計按下圖交換,怎么處理012345678926436187331937597669下標(biāo)初值下標(biāo)交換012345678919436187332637597669本章目Visual
Basic程序設(shè)計5.3控件數(shù)組1控件數(shù)組的概念控件數(shù)組由一組相同類型的控件組成。它們共用一個控件名,通過索引加以區(qū)別。第一個控件的index為0.Visual
Basic程序設(shè)計2控件數(shù)組的建立(1)在設(shè)計時建立①
先在窗體上畫出某控件。②
選中該控件,進行copy和paste操作。③
進行控件的事件編程。Visual
Basic程序設(shè)計Visual
Basic程序設(shè)計Private
Sub
Command1_Click(Index
As
Integer)Select
Case
IndexCase
0Label1.Caption="第一個按鈕"Case
1Label1.Caption="第二個按鈕"Case
2Label1.Caption="第三個按鈕"Case
3Label1.Caption="第四個按鈕"End
SelectEnd
SubVisual
Basic程序設(shè)計2控件數(shù)組的建立(2)運行時添加控件數(shù)組①
先在窗體上畫出某控件,設(shè)置它的index為0。②
用load方法添加其余的若干個元素。③
對新加進的控件設(shè)置其屬性。Visual
Basic程序設(shè)計例5.4建立一個國際象棋棋盤。Visual
Basic程序設(shè)計Private
Sub
Form_Load()Dim
i%,
c%,
r%For
i
=
1
To
64r
=
(i
-
1)
\
8
c
=
(i
-
1)
Mod
8Load
Label1(i)Label1(i).Caption
=
iLabel1(i).Visible
=
TrueLabel1(i).Top
=
r
*
50Label1(i).Left
=
c
*
50Label1(i).BackColor
=
IIf((r
+
c)
Mod
2
=
0,
&HFFFFFF,
&H0)Next
iLabel1(0).Visible
=
FalseEnd
SubVisual
Basic程序設(shè)計Private
Sub
Label1_Click(Index
As
Integer)Dim
i%Label1(i).Caption
=
iFor
i
=
1
To
64If
Label1(i).BackColor
=
&H0
ThenLabel1(i).BackColor
=
&HFFFFFFElseLabel1(i).BackColor
=
&H0End
IfNext
iEnd
SubVisual
Basic程序設(shè)計5.4
自定義類型及數(shù)組5.4.1自定義類型的定義數(shù)組存放性質(zhì)相同的數(shù)據(jù)集合。若不同類型信息作為一個整體來描述,例如姓名、性別、出生年月等,通過Type語句來實現(xiàn)。Type自定義類型名元素名1
As類型名…元素名n
As類型名End
Type其中:元素名:表示自定義類型中的一個成員,可以是簡單變量,也可以是數(shù)組。類型名:可以是標(biāo)準類型,也可以是自定義類型。Visual
Basic程序設(shè)計例如,定義一個有關(guān)學(xué)生信息的類型:Type
StudTypeName
As
String*5Sex
As
String*1Telephone
As
Long"StudType為自定義類型名"姓名"性別"電話School
As
String*10"學(xué)校
End
Type自定義類型不能在過程內(nèi)定義,一般放在標(biāo)準模塊文件,默認為Public;若在窗體模塊的通用聲明段定義,必須加Private。自定義類型中的元素類型可以是字符串,但應(yīng)是定長字符串。Visual
Basic程序設(shè)計5.4.2自定義類型變量的使用1.自定義類型變量的聲明定義了自定義類型,就可在變量的聲明時使用。Dim變量名As自定義類型名例如,如下語句:Dim
S1
As
StudType,S2
As
StudType聲明S1、S2為兩個同種類型的變量
注意:不要混淆StudType和S1,前者如同Integer等的類型名,后者根據(jù)該類型分配所需的內(nèi)存空間,存儲各成員數(shù)據(jù)。類型變量和數(shù)組相同之處它們都是由若干個成員組成;不同之處,前者的成員代表不同性質(zhì)、不同類型的數(shù)據(jù),以各個不同的成員名表示;而數(shù)組一般存放的是同種性質(zhì)、同種類型的數(shù)據(jù),以下標(biāo)表示不同的元素。Visual
Basic程序設(shè)計2.自定義類型變量成員的引用引用自定義類型變量中的某個成員,形式如下:自定義類型變量名.成員名例如,S1.NameS1.SexS1變量中的姓名性別可利用With語句簡化成員引用:With結(jié)構(gòu)變量對象名語句塊End
WithWith
S1.Name="張華".Sex="男".School="同濟大學(xué)"End
WithVisual
Basic程序設(shè)計自定義類型一般在標(biāo)準模塊中定義Visual
Basic程序設(shè)計然后在窗體代碼中定義該類型的變量Private
Sub
Command1_Click()Dim
s1
As
studTypeDim
i%s1.no
=
123
=
"aaa"s1.mark(1)
=
70s1.mark(2)
=
89s1.mark(3)
=
94Print
s1.noPrint
For
i
=
1
To
3Print
s1.mark(i)Next
iEnd
SubVisual
Basic程序設(shè)計5.4.3自定義類型數(shù)組及應(yīng)用自定義類型數(shù)組就是數(shù)組中的每個元素是自定義類型。例5.13用自定義類型數(shù)組,查詢和顯示學(xué)生信息。分析:自定義一個記錄類型,由姓名、性別、電話、學(xué)校組成,聲明一個存放100個記錄的數(shù)組。Visual
Basic程序設(shè)計例5.5
p116利用自定義類型數(shù)組,編寫一模擬數(shù)據(jù)庫記錄輸入、顯示和查詢的程序Visual
Basic程序設(shè)計Private
Type
StudName
As
String
*
10Special
As
String
*
10Total
As
SingleEnd
TypeDim
stu(1
To
20)
As
StudDim
n%,
i%Visual
Basic程序設(shè)計Private
Sub
Command1_Click(Index
As
Integer)Select
Case
IndexCase
0If
n
<
20
Thenn
=
n
+
1stu(n).Name
=
Text1.Textstu(n).Special
=
Text2.Textstu(n).Total
=
Val(Text3.Text)End
IfText1.Text
=
""Text2.Text
=
""Text3.Text
=
""Case
1If
i
>
1
Then
i
=
i
-
1If
i
>=
1
ThenText1.Text
=
stu(i).NameText2.Text
=
stu(i).SpecialText3.Text
=
stu(i).TotalEnd
IfVisual
Basic程序設(shè)計Case
2If
i
<
n
Then
i
=
i
+
1If
i
<=
n
ThenText1.Text
=
stu(i).NameText2.Text
=
stu(i).SpecialText3.Text
=
stu(i).TotalEnd
IfCase
3End
SelectLabel4.Caption
=
i
&
"/"
&
nEnd
SubVisual
Basic程序設(shè)計5.5 常用算法(二)1.分類統(tǒng)計將一批數(shù)據(jù)按條件統(tǒng)計每一類中包含的個數(shù)。例如,統(tǒng)計學(xué)生成績優(yōu)、良、中、及格、不及格人數(shù)。這類問題要掌握分類條件表達式的書寫和使用計數(shù)變量保存相應(yīng)的計數(shù)。Visual
Basic程序設(shè)計例5.6輸入一個字符串,分別統(tǒng)計字母字符、數(shù)字字符和其他字符出現(xiàn)的次數(shù)。Private
Sub
Command1_Click()Dim
s
As
String,
c
As
String
*
1Dim
i%,
m%,
n%,
k%m
=
0:
n
=
0:
k
=
0s
=
Text1.TextFor
i
=
1
To
Len(s)c
=
Mid(s,
i,
1)If
c
>=
"a"
And
c
<=
"z"
Or
c
>=
"A"
And
c
<=
"Z"
Thenm
=
m
+
1ElseIf
c
>=
"0"
And
c
<=
"9"
Thenn
=
n
+
1Elsek
=
k
+
1End
IfNext
iPrint
m,
n,
kEnd
SubVisual
Basic程序設(shè)計2.大量數(shù)據(jù)的輸入和編輯在財務(wù)、工程計算中,經(jīng)常需要對大量的數(shù)據(jù)進行輸入和編輯??衫梦谋究蛲ㄟ^編程來實現(xiàn)。例5.15輸入一系列的數(shù)據(jù),輸入結(jié)束將它們按分隔符分離后存放在數(shù)組中。對輸入的數(shù)據(jù)允許修改和自動識別非數(shù)字數(shù)據(jù)。利用文本框輸入和編輯數(shù)據(jù);利用Replace函數(shù)去除重復(fù)輸入的分隔符。利用Split函數(shù)將輸入的內(nèi)容分離到數(shù)組中。Visual
Basic程序設(shè)計P120字符數(shù)據(jù)的分拆與合并Visual
Basic程序設(shè)計Dim
a()
As
StringPrivate
Sub
Command1_Click()Dim
s
As
StringDim
i%s
=
Text1.Texts
=
Replace(s,
",,",
",")a
=
Split(s,
",")For
i
=
0
To
UBound(a)Picture1.Print
a(i)Next
iEnd
SubPrivate
Sub
Command2_Click()Text2.Text
=
Join(a,
"
")
End
SubVisual
Basic程序設(shè)計Private
Sub
Text1_KeyPress(KeyAscii
As
Integer)Dim
s
As
String
*
1s
=
Chr(KeyAscii)Select
Case
sCase
"0"
To
"9",
","?Case
ElseKeyAscii
=
0End
SelectEnd
Sub輸入數(shù)字,取出非法字符Visual
Basic程序設(shè)計3.數(shù)組排序排序是將一組數(shù)按遞增或遞減的次序排列,例如按學(xué)生的成績、球賽積分等排序。排序的算法有許多,常用的有選擇法、冒泡法、插入法、合并排序等。(1)選擇法排序基本思想:每次在若干個無序數(shù)中找最小(大)數(shù),并放在相應(yīng)的位置。Visual
Basic程序設(shè)計n個數(shù)的序列,用選擇法按遞增次序排序的步驟:從n個數(shù)中找出最小數(shù)的下標(biāo),出了內(nèi)循環(huán),最小數(shù)與第1個數(shù)交換位置;通過這一 輪排序,第1個數(shù)已確定好。除已排序的數(shù)外,其余數(shù)再按步驟1)的方法選出最小的數(shù),與未排序數(shù)中的第1個數(shù)交換位置。重復(fù)步驟2),最后構(gòu)成遞增序列。Visual
Basic程序設(shè)計例5.5
對已知存放在數(shù)組中的6個數(shù),用選擇法按遞增順序排序。選擇法排序過程示意選擇法演示Visual
Basic程序設(shè)計Private
Sub
Command1_Click()Dim
a()
As
VariantDim
n%,
i%,
j%,
t%,
imin%a
=
Array(1,
5,
13,
8,
3,
2,
4)n
=
UBound(a)For
i=0
To
n‘輸出原數(shù)組Print
a(i),Next
iPrintFor
i
=
0
To
n-1imin
=
iFor
j
=
i
+
1
To
nIf
a(j)
<
a(imin)
Then
imin
=
jNext
jt
=
a(i)a(i)
=
a(imin)a(imin)
=
tNext
iFor
i=0
To
n‘輸出排序后的數(shù)組Print
a(i),Next
iPrintEnd
Sub選擇排序Visual
Basic程序設(shè)計(2)冒泡法排序基本思想是:從第一個元素開始,對數(shù)組中兩兩相鄰的元素比較,將值較小的元素放在前面,值較大的元素放在后面,一輪比較比較完畢,一個最大的數(shù)沉底成為數(shù)組中的最后一個元素,一些較小的數(shù)如同氣泡一樣上浮一個位置。n個數(shù),經(jīng)過n-1輪比較后完成排序。Visual
Basic程序設(shè)計例5.6
用冒泡排序法實現(xiàn)例5.5的問題。冒泡法演示Visual
Basic程序設(shè)計Private
Sub
Command1_Click()Dim
a
As
VariantDim
i%,
j%,
n%,
t%a
=
Array(3,
78,
5,
4,
12,
7,
1)n
=
UBound(a)For
i=0
To
n"排序前Print
a(i),Next
iPrintFor
i=0
To
n-1"走n趟For
j=0
To
n-1If
a(j)>a(j+1)Then"前一個比后一個大t
=
a(j):
a(j)
=
a(j
+
1):
a(j
+
1)
=
tEnd
IfNext
jNext
iFor
i=0
To
n"排序后Print
a(i),Next
iPrintEnd
Sub冒泡排序Visual
Basic程序設(shè)計7.在有序數(shù)組中插入數(shù)據(jù)插入數(shù)據(jù)基本思想是:首先查找待插入數(shù)據(jù)在數(shù)組中的位置k;然后從最后一個元素開始往前到下標(biāo)為k的元素依次往后移動一個位置;3)第k個元素的位置騰出,將數(shù)據(jù)插入。Visual
Basic程序設(shè)計Private
Sub
Command1_Click()Dim
a
As
Variant,
i%,
n%,
x%,
j%a
=
Array(1,
2,
6,
9,
14,
18,
21,
0)x
=
5n
=
UBound(a)n=n-1"不算最后的0For
i=0
To
n"輸出原數(shù)組Print
a(i),Next
iPrintFor
i=0
To
n"找到插入的位置If
x<a(i)Then
Exit
For
Next
iFor
j
=
n
To
i
Step
-1a(j
+
1)
=
a(j)Next
ja(i)=x"插入xFor
i=0
To
n+1"輸出原數(shù)組Print
a(i),Next
iPrintEnd
Sub在有序數(shù)組中插入一個元素Visual
Basic程序設(shè)計Private
Sub
Form_Click()Dim
a(),
i%,
k%,
x%,
n%a
=
Array(1,
4,
7,
9,
12,
23,
56)n
=
UBound(a)x=InputBox("輸入要插入的數(shù)")For
k=0
To
n
"查找欲插入數(shù)x在數(shù)組中的位置"數(shù)組增加一個元素"數(shù)組元素后移一位,騰出位置If
x
<
a(k)
Then
Exit
ForNext
kReDim
Preserve
a(n
+
1)For
i
=
n
To
k
Step
-1a(i
+
1)
=
a(i)Next
i"數(shù)x插入在對應(yīng)的位置,使數(shù)組保持有序
"顯示插入后的各數(shù)組元素a(k)
=
xFor
i
=
0
To
n
+
1Print
a(i);Next
iEnd
Sub例5.7在有序數(shù)組a中插入數(shù)值x。另做Visual
Basic程序設(shè)計8.刪除數(shù)據(jù)刪除操作首先也是要找到欲刪除的元素的位置k;然后從k+1到n個位置開始向前移動;最后將數(shù)組元素減1。例5.8將任意輸入的值進行判斷是否存在,若存在就將此元素刪除。數(shù)據(jù)刪除演示Visual
Basic程序設(shè)計Private
Sub
Command1_Click()Dim
a()
As
Variant,
x%,
i%,
n%,
j%a
=
Array(1,
7,
5,
9,
8,
13,
100)n
=
UBound(a)For
j=0
To
n’輸出原數(shù)組Print
a(j),Next
jPrintx
=
5For
i=0
To
n"找到元素所在位置If
a(i)=x
Then
Exit
ForNext
iIf
i>n
Then
Print"找不到",xExit
Sub"退出
End
IfFor
j
=
i
To
n
-
1a(j)
=
a(j
+
1)NextFor
j=0
To
n–1‘輸出現(xiàn)數(shù)組Print
a(j),Next
jPrintEnd
SubVisual
Basic程序設(shè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)合同范本務(wù)
- 醫(yī)院房屋建設(shè)施工合同范本
- 醫(yī)藥廠家銷售合同范本
- 美術(shù)基礎(chǔ)習(xí)題及參考答案
- 半包家裝合同范本
- 口頭贈與合同范本
- 《黃河大合唱》的教學(xué)反思
- 單位非租賃合同范本
- 單間小院出租合同范本
- 廚房設(shè)備維修合同范本
- 消防設(shè)施維保過程風(fēng)險及保障措施
- 智能交通系統(tǒng)概論 課件全套 朱文興 第1-10章 緒論 - 城市交通子區(qū)控制系統(tǒng)
- 一鍵自動生成spccpkmsappk數(shù)據(jù)工具
- 2024年湖南省中考英語真題卷及答案解析
- 2024年安防監(jiān)控系統(tǒng)技術(shù)標(biāo)準與規(guī)范
- 作業(yè)區(qū)鐵路專用線工程項目可行性研究報告
- 2024年黑龍江省綏化市中考物理試題含答案
- 七年級下學(xué)期生物蘇教版電子教材
- 肺病科中醫(yī)特色護理
- 醫(yī)院培訓(xùn)課件:《靜脈中等長度導(dǎo)管臨床應(yīng)用專家共識》
- 智能倉儲物流系統(tǒng)開發(fā)合同
評論
0/150
提交評論