第五章VB數(shù)組與自定類型10_第1頁
第五章VB數(shù)組與自定類型10_第2頁
第五章VB數(shù)組與自定類型10_第3頁
第五章VB數(shù)組與自定類型10_第4頁
第五章VB數(shù)組與自定類型10_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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

Print

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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論