vb算法数组实例

vb算法数组实例
vb算法数组实例

1.互不相等的随机数的生成算法

P rivate Sub CmdStart_Click()

'生成10个[1,100]范围内互不相等的随机整数

Dim R(1 To 10) As Integer '保存生成的10个数

Dim i As Integer, j As Integer

i = 1

Do While i <= 10

'生成一个随机数,并保存在r(i)中

R(i) = Int(Rnd * 100) + 1

'将r(i)与已经生成的r(1)~r(i-1)进行比较

For j = 1 To i - 1

If R(i) = R(j) Then Exit For

Next j

If j >= i Then 'j>=i说明r(i)没有与r(1)~r(i-1)的任何一个数相等

i = i + 1 'i加1,下一次生成新的,否则,i保持原值,下一次重新生成r(i)

End If

Loop

For i = 1 To 10

Print R(i);

Next i

Print

End Sub

2.选择排序

Private Sub CmdOrder1_Click()

Form1.Cls

Const N = 10

Dim A(1 To N) As Integer

Dim i As Integer, j As Integer, k As Integer

'生成并输出10个[1,100]范围内互不相等的随机整数

Print " 系统生成数据:";

i = 1

Do While i <= N

A(i) = Int(Rnd * 100) + 1

For j = 1 To i - 1

If A(i) = A(j) Then Exit For

Next j

If j >= i Then

Print A(i);

i = i + 1

End If

Loop

Print

'开始排序

For i = 1 To N - 1

'将a(i)与a(i+1)~a(N)每一个数进行比较

For j = i + 1 To N

If A(i) < A(j) Then '如果a(i)

temp = A(i)

A(i) = A(j)

A(j) = temp

End If

Next j

'输出第i轮排序的结果——找到a(i)~a(N)中的最大数,并放在a(i)中 Print "第" & i & "轮排序结果:";

For k = 1 To N

Print A(k);

Next k

Print

Next i

End Sub

3.选择排序优化:

Private Sub CmdOrder2_Click()

Form1.Cls

Const N = 10

Dim A(1 To N) As Integer

Dim i As Integer, j As Integer, k As Integer, Pos As Integer

'生成并输出10个[1,100]范围内互不相等的随机整数

Print " 系统生成数据:";

i = 1

Do While i <= N

A(i) = Int(Rnd * 100) + 1

For j = 1 To i - 1

If A(i) = A(j) Then Exit For

Next j

If j >= i Then

Print A(i);

i = i + 1

End If

Loop

Print

'开始排序

For i = 1 To N - 1

'寻找a(i)~a(N)中的最大数的下标,并保存在变量Pos中

Pos = i

For j = i + 1 To N

If A(Pos) < A(j) Then Pos = j

Next j

'如果Pos<>i,交换a(i),a(pos)

If Pos <> i Then

temp = A(i)

A(i) = A(Pos)

A(Pos) = temp

End If

'输出第i轮排序的结果

Print "第" & i & "轮排序结果:";

For k = 1 To N

Print A(k);

Next k

Print

Next i

End Sub

4.冒泡排序及其优化

Private Sub CmdOrder3_Click()

Form1.Cls

Const N = 10

Dim A(1 To N) As Integer

Dim i As Integer, j As Integer, k As Integer, Pos As Integer

'生成并输出10个[1,100]范围内互不相等的随机整数

Print " 系统生成数据:";

i = 1

Do While i <= N

A(i) = Int(Rnd * 100) + 1

For j = 1 To i - 1

If A(i) = A(j) Then Exit For

Next j

If j >= i Then

Print A(i);

i = i + 1

End If

Loop

Print

'开始排序

For i = 1 To N - 1

'依次比较a(1)和a(2),a(2)和a(3),.....,a(N-i)和a(N-i+1),如果前数<后数,交换

If A(j) < A(j + 1) Then

temp = A(j)

A(j) = A(j + 1)

A(j + 1) = temp

End If

Next j

'输出第i轮排序的结果——找到了a(1)~a(N-i+1)中的最小数,并放置在a(N-i+1) Print "第" & i & "轮排序结果:";

For k = 1 To N

Print A(k);

Next k

Print

Next i

'冒泡排序的冒泡方向可以从前往后,也可以从后往前,思路相似,代码略有差异

End Sub

5.冒泡排序优化:

P rivate Sub CmdOrder4_Click()

Form1.Cls

Const N = 10

Dim A(1 To N) As Integer

Dim i As Integer, j As Integer, k As Integer, Pos As Integer

Dim IsChanged As Boolean

'生成并输出10个[1,100]范围内互不相等的随机整数

Print " 系统生成数据:";

i = 1

Do While i <= N

A(i) = Int(Rnd * 100) + 1

For j = 1 To i - 1

If A(i) = A(j) Then Exit For

Next j

If j >= i Then

Print A(i);

i = i + 1

End If

Loop

Print

'开始排序

For i = 1 To N - 1

'利用变量ischanged来监视是否发生数据交换,如果没有交换,表示数据排序已经完成,可以提前推出

IsChanged = False

If A(j) < A(j + 1) Then

temp = A(j)

A(j) = A(j + 1)

A(j + 1) = temp

IsChanged = True

End If

Next j

'输出第i轮排序的结果——找到了a(1)~a(N-i+1)中的最小数,并放置在a(N-i+1) Print "第" & i & "轮排序结果:";

For k = 1 To N

Print A(k);

Next k

Print

If Not IsChanged Then Exit For

Next i

End Sub

6.数组中元素的插入

Private Sub CmdStart_Click()

Dim a() As Integer

ReDim a(1 To 10)

'生成原始数据a(1)~a(10)

Print "原始数据:";

For i = 1 To 10

a(i) = Int(Rnd * 100) + 1

Print a(i);

Next i

position = Val(InputBox("请选择插入数据的位置(1~11)"))

x = Val(InputBox("请输入数据"))

'为数组扩容

ReDim Preserve a(1 To 11)

'移动插入位置后面的数据,注意移动的顺序和所移动的数据,不要多移、少移

For i = 10 To position Step -1

a(i + 1) = a(i)

Next i

'插入数据

a(position) = x

'输出新的数据

Print

Print "新的数据:";

For i = 1 To 11

Print a(i);

Next i

Print

End Sub

7-1开始插入

Option Base 1

Option Explicit

Dim a() As Integer

Private Sub CmdStart_Click()

'函数说明:

'lbound(数组名):返回数组的下标下限

'ubound(数组名):返回数组的下标上限

Dim x As Integer, Pos As Integer, i As Integer

x = Val(InputBox("请输入准备插入数组的数据"))

'为数组扩容

ReDim Preserve a(UBound(a) + 1)

'寻找数据x的插入位置pos——数组中第一个大于x的数据的位置 Pos = LBound(a)

Do While (a(Pos) <= x And Pos <= UBound(a) - 1)

Pos = Pos + 1

Loop

'移动插入位置后面的数据

For i = UBound(a) To Pos + 1 Step -1

a(i) = a(i - 1)

Next i

'插入数据

a(Pos) = x

'输出新的数据

Print

Print "新的数据:";

For i = LBound(a) To UBound(a)

Print a(i);

Next i

Print

End Sub

7-2生成数据并排序

Private Sub Command1_Click()

ReDim a(10)

Dim i As Integer, j As Integer, Pos As Integer

Dim Temp As Integer

'生成原始数据a(1)~a(10)

For i = 1 To 10

a(i) = Int(Rnd * 100) + 1

Next i

'排序

For i = 1 To 9

Pos = i

For j = i + 1 To 10

If a(Pos) > a(j) Then Pos = j

Next j

If Pos <> i Then

Temp = a(Pos): a(Pos) = a(i): a(i) = Temp

End If

Next i

Print "原始有序数据:";

For i = 1 To 10

Print a(i);

Next i

Print

End Sub

8.数组中元素的删除

先随机生成数据:Private Sub Command1_Click()

ReDim a(10)

Dim i As Integer, j As Integer, pos As Integer

Dim Temp As Integer

'生成原始数据a(1)~a(10)

Print "原始数据:";

For i = 1 To 10

a(i) = Int(Rnd * 100) + 1

Print a(i);

Next i

Print

End Sub

Option Base 1

Option Explicit

Dim a() As Integer

Private Sub CmdStart_Click()

'函数说明:

'lbound(数组名):返回数组的下标下限

'ubound(数组名):返回数组的下标上限

Dim x As Integer, pos As Integer, i As Integer

x = Val(InputBox("请输入准备删除的数据"))

'查找需要删除的数据是否存在

For pos = LBound(a) To UBound(a)

If a(pos) = x Then Exit For

Next pos

If pos > UBound(a) Then '需要删除的数据不存在

MsgBox "需要删除的数据不存在,删除动作立即停止!", vbOKOnly + vbCritical

Else

'通过移动数据达到删除数据的目的

For i = pos To UBound(a) - 1

a(i) = a(i + 1)

Next i

'数组缩容

ReDim Preserve a(UBound(a) - 1)

'输出新的数据

Print

Print "新的数据:";

For i = LBound(a) To UBound(a)

Print a(i);

Next i

Print

End If

End Sub

9.顺序查找法

Private Sub CmdStart_Click()

'函数说明:

'lbound(数组名):返回数组的下标下限

'ubound(数组名):返回数组的下标上限

Dim x As Integer, pos As Integer, i As Integer

x = Val(InputBox("请输入查找的数据"))

pos = LBound(a)

Do While pos <= UBound(a)

If a(pos) <> x Then

pos = pos + 1

Else

Exit Do

End If

Loop

If pos > UBound(a) Then '数据不存在

MsgBox "数据不存在!", vbOKOnly + vbInformation

Else

MsgBox "数据在数组中的下标是" & pos, vbOKOnly + vbInformation End If

End Sub

10.折半查找

Private Sub Command2_Click()

Dim x As Integer, l As Integer, r As Integer, m As Integer

x = Val(InputBox("请输入查找的数据"))

l = 1

r = 10

Do

m = (l + r) / 2

If a(m) > x Then

l = m + 1

ElseIf a(m) < x Then

r = m - 1

End If

Loop While (l <= r And a(m) <> x)

If a(m) = x Then

MsgBox "数据在数组中的下标是" & m, vbOKOnly + vbInformation

Else

MsgBox "数据不存在!", vbOKOnly + vbInformation

End If

'注:折半查找的查找效率高于顺序查找,但是需要以数据的有序性作为前提'实际应用中,排序并不需要每次都进行,排序值需要完成一次即可

'而且利用插入排序可以使得数据在输入完成的时候即可完成排序

End Sub

11.回文判断

法1:

Private Sub Command1_Click()

Dim s As String

s = Text1.Text

l = Len(s)

For i = 1 To l / 2

c1 = Mid(s, i, 1)

c2 = Mid(s, l - i + 1, 1)

If c1 <> c2 Then

Exit For

End If

Next i

If i <= l / 2 Then

Label2.Caption = "不是回文!"

Else

Label2.Caption = "是回文!"

End If

End Sub

法2

Private Sub Command2_Click()

Dim s() As String

St = Text1.Text

l = Len(St)

ReDim s(1 To l)

For i = 1 To l

s(i) = Mid(St, i, 1)

Next i

For i = 1 To l / 2

If s(i) <> s(l - i + 1) Then

Exit For

End If

Next i

If i <= l / 2 Then

Label2.Caption = "不是回文!"

Else

Label2.Caption = "是回文!"

End If

End Sub

12.矩阵的转置:

Option Base 1

Option Explicit

Private Sub Command1_Click()

Const N = 5

Dim a(N, N) As Integer, temp As Integer Dim i As Integer, j As Integer

'生成并输出数据

Print "转置前"

For i = 1 To 5

For j = 1 To 5

a(i, j) = Int(Rnd * 100)

Print a(i, j);

Next j

Print

Next i

'矩阵转置

For i = 1 To 5

For j = 1 To i - 1

temp = a(i, j)

a(i, j) = a(j, i)

a(j, i) = temp

Next j

Next i

'输出转置后的矩阵

Print "转置后"

For i = 1 To 5

For j = 1 To 5

Print a(i, j);

Next j

Print

Next i

end Sub

13.矩阵的乘法运算(P72例3-24):

Option Base 1

Option Explicit

Dim a(5, 3) As Integer, b(3, 4) As Integer, c(5, 4) As Integer 1.生成矩阵A:

Private Sub Command1_Click()

Dim i As Integer, j As Integer

'生成并输出矩阵A

Print "矩阵A:"

For i = 1 To 5

For j = 1 To 3

a(i, j) = Int(Rnd * 10)

Print a(i, j);

Next j

Print

Next i

End Sub

2.生成矩阵B

Private Sub Command2_Click()

Dim i As Integer, j As Integer

'生成并输出矩阵A

Print "矩阵B:"

For i = 1 To 3

For j = 1 To 4

b(i, j) = Int(Rnd * 10)

Print b(i, j);

Next j

Print

Next i

End Sub

3.矩阵相乘:

Private Sub Command3_Click()

Dim i As Integer, j As Integer, k As Integer

Print "A*B"

For i = 1 To 5

For j = 1 To 4

'计算c(i,j)=a(i,1)*b(1,j)+a(i,2)*b(2,j)+a(i,3)*b(3,j)

c(i, j) = 0

For k = 1 To 3

c(i, j) = c(i, j) + a(i, k) * b(k, j)

Next k

Print c(i, j); Spc(7 - Len(Str(c(i, j))));

Next j

Print

Next i

End Sub

14.矩阵鞍点的查找(所在行最小,同时是所在列最大的元素)

附:某些特殊矩阵元素的特征描述(上三角、下三角、对角线元素等)

Option Base 1

Option Explicit

Private Sub Command3_Click()

Dim a(4, 5) As Integer

Dim i As Integer, j As Integer, k As Integer

Form1.Cls

Print "原始矩阵"

For i = 1 To 4

For j = 1 To 5

a(i, j) = Int(Rnd * 90) + 10

Print a(i, j);

Next j

Print

Next i

'开始寻找鞍点,

'方法:针对第i行

'找出第i行中最小的元素的列号k

'查找k列的所有元素,是否存在大于a(i,k)的元素,如果不存在,可以确定为鞍点

For i = 1 To 4

'找出第i行中最小的元素的列号k

k = 1

For j = 2 To 5

If a(i, j) < a(i, k) Then k = j

Next j

'遍历第k列元素,确定是否存在大于a(i,k)的元素

For j = 1 To 4

If a(j, k) > a(i, k) Then Exit For

Next j

If j > 4 Then Print i, k, a(i, k)

Next i

End Sub

15.杨辉三角:

法1:

Private Sub Command1_Click()

'利用二维数组,是比较简单直观的做法

Dim a(20, 20) As Long '最大不超过20层

Dim N As Integer '用户输入的层数

N = Val(InputBox("请输入杨辉三角的层数"))

For i = 1 To N + 1

a(i, 1) = 1

a(i, i) = 1

Next i

'以下利用杨辉三角的特征计算出杨辉三角的数字,结果存放在二维数组中,结果如下'1

'1 2 1

'1 3 3 1

'1 4 6 4 1

'......

For i = 3 To N + 1

For j = 2 To N

a(i, j) = a(i - 1, j - 1) + a(i - 1, j)

Next j

Next i

'将二维数组的左下三角元素以杨辉三角的格式输出,每个数据占6位

Form1.Cls

For i = 1 To N + 1

Print Tab(30 - 3 * i);

For j = 1 To i

c = Trim(Str(a(i, j)))

Print c; Spc(6 - Len(c)); '由于不同的数据位数不同,所以要根据位数在后面补足空格,确保总共占6位

Next j

Print

Next i

End Sub

法2:

Private Sub Command2_Click()

'用一位数组事先数据的输出

'初始化数组a元素为1,1,1,1,1,1,1,1,1,1,……

'第0轮

'输出a(1)

'第1轮

'输出a(1)~a(2)

'第2轮:

'从a(2)~a(2),令a(i)=a(i)+a(i-1),数组元素变为1,2,1,1,1,1,1,1,1,1,……

'输出a(1)~a(3)

'第3轮

'从a(3)~a(2),令a(i)=a(i)+a(i-1),数组元素变为1,3,3,1,1,1,1,1,1,1,……

'输出a(1)~a(4)

'第4轮

'从a(4)~a(2),令a(i)=a(i)+a(i-1),数组元素变为1,4,6,4,1,1,1,1,1,1,……

'输出a(1)~a(5)

'......

'第i轮

'从a(i)~a(2),令a(i)=a(i)+a(i-1)

'输出a(1)~a(i+1)

'......

Dim a(20) As Long

For i = 1 To 20

a(i) = 1

Next i

N = Val(InputBox("请输入杨辉三角的层数"))

Form1.Cls

For i = 0 To N

'计算a(i)~a(2)

For j = i To 2 Step -1

a(j) = a(j) + a(j - 1)

'由于step=-1 ,所以当i=0,1的时候,循环没有进行,因此第0,1轮没有赋值,只有后面的输出

Next j

'输出a(1)~a(i+1)

Print Tab(30 - 3 * i);

For j = 1 To i + 1

c = Trim(Str(a(j)))

Print c; Spc(6 - Len(c));

Next j

Print

Next i

End Sub

16.海盗船上的生存问题

Private Sub Command1_Click()

Dim a() As Integer

Dim N As Integer '总人数

Dim D As Integer '死亡数字

Dim Curp As Integer '当前轮到数数字的人

Dim Pnum As Integer '当前船上剩余的人数

Dim i As Integer '

Form1.Cls

N = Val(Text1.Text)

D = Val(Text2.Text)

ReDim a(N)

For i = 1 To N

a(i) = 1

Next i

Print "下海顺序:"

i = 0

Curp = 0

Pnum = N

Do

Curp = Curp + 1 '轮到下一个人数数

If (Curp > N) Then Curp = 1 '如果一轮数完,让第一个人数

If (a(Curp) = 1) Then i = i + 1 '下标为Curp的人如果还在船上,由他数下一个数

If (i = D) Then '如果数到死亡数字

a(Curp) = 0 '把当前数数人扔下海

Print Curp '输出当前扔下海的人

Pnum = Pnum - 1 '剩余人数减1

i = 0 '从头重新数

End If

Loop While (Pnum > 1)

'寻找安全位置

For i = 1 To N

If a(i) = 1 Then

Print "安全位置=" & i

Exit For

End If

Next i

End Sub

VB .NET中控件数组的实现

https://www.360docs.net/doc/068874705.html,中控件数组的实现 摘要:VB编程时,当要处理一组相同类型的控件的同一事件过程时,我们可以引入控件数组这一概念。如进行计算器程序编写时,可创建十个数字按钮的控件数组,共享同一事件过程。VB6升级到https://www.360docs.net/doc/068874705.html,后,VB6控件数组的创建方法在.NET中不可用,本文总结了几种https://www.360docs.net/doc/068874705.html,中使用控件数组的方法。 关键词:https://www.360docs.net/doc/068874705.html,控件数组事件过程程序代码 一、关于控件数组 熟悉VB6编程的,对控件数组这一概念应该非常熟悉,它是VB6中的一项简单而非常实用的技术,是指具有相同名称的同类型的控件,共享同一事件。它的最大好处是:简化编程。但当我们把这一用法沿用到https://www.360docs.net/doc/068874705.html,中来时,却发现无法实现。虽然https://www.360docs.net/doc/068874705.html,中没有VB6中实现控件数组的方法,但在https://www.360docs.net/doc/068874705.html,中控件数组的运用更加灵活了。 https://www.360docs.net/doc/068874705.html,中,控件数组的创建不再是在设计时简单地将同类型的各个控件的Name属性值设置成同一名称就可以了,https://www.360docs.net/doc/068874705.html,中,不公能够创建同类型的相同事件处理过程,还能够创建属于不同类型但共享相同事件的控件组。 二、https://www.360docs.net/doc/068874705.html,中控件数组的实现 要在https://www.360docs.net/doc/068874705.html,中实现控件数组这一机制,我们需要通过编写代码来完成,下面来介绍几种的方法,大家可以根据程序的需要进行选择。 1、使用Handles子句。 先将控件数组中各控件对象依次添加到窗体,然后创建其中一个对象的事件过程(执行部分先不写),再把其它对象的这一事件依次添加在后面,各事件过程名之间用逗号分隔开来。在事件过程的执行部分,如果需要引用这些对象,则要先给这些对象创建一个相同的名称。当要引用对象时,不再使用它们的Name属性值,而是新创建的名称。示例代码如下(部分内容省略): Label1_Click(ByVal sender…)Handles Label1.C lick,Label2.Click,Label3.Click Dim lbl As Label = CType(sender, Label) 当中,创建的是Label1的Click事件,在其后面,添加了Label2及Label3的Click 事件。事件过程中,通过一条Dim语句,定义三个标签具有相同的名称lbl,在下面的代码中,要设置或获取其中某一个标签的某个属性值时,直接使用名称lbl即可。这种方法实现起来最方便简单,以上实例中要求控件数组中控件类型相同,通过此方法,也可实现不同类型同一事件处理程序的共享,如具有同一功能的菜单项和工

VB常用算法

常用算法 1.判断素数 素数是指只能被1与自己整除的数是素数,最小的素数是2,如3,5,7等都是素数判断方法一: Private Function Prime(N As Integer)As Boolean Dim i As Integer For i=2 To N-1(或sqr(N)或N\2) If N Mod i=0 Then Exit For Next i (或N/i=Int(N/i)) If i=N Then Prime=True End Function 判断方法二: Private Function Prime(N As Integer)As Boolean Dim i As Integer For i=2 To N-1 If N Mod i=0 Then Exit Function Next i Prime=True End Function (2)求最大公约数(欧几里德算法,辗转相除法) 最大公约数是指两个数最大的公约数 Private Function Gcd(byval m As Integer,ByVal n As Integer)As Integer Dim r As Integer r=m Mod n Do while r<>0 m=n n=r r=m Mod n Loop Gcd=n End Function 利用递归实现判断最大公约数 Private Function Gcd(ByVal m As Integer,ByVal n As Integer)As Integer Dim r As Integer r=m Mod n If r=0 Then Gcd=n ELse M=n n=r Gcd=Gcd(m,n) End If

VB常用算法介绍

常用算法介绍 VB 算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生100个[0,99]围的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。 本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x(1)中,个位是2的个数存放在x(2)中,……个位是0的个数存放在x(10)。 将程序编写在一个GetTJput过程中,代码如下: Public Sub GetTJput() Dim a(1 To 100) As Integer Dim x(1 To 10) As Integer

Dim i As Integer, p As Integer '产生100个[0,99]围的随机整数,每行10个打印出来 For i = 1 To 100 a(i) = Int(Rnd * 100) If a(i) < 10 Then Form1.Print Space(2); a(i); Else Form1.Print Space(1); a(i); End If If i Mod 10 = 0 Then Form1.Print Next i '统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数,并将统计结果保存在数组x(1),x(2),...,x(10)中,将统计结果打印出来 For i = 1 To 100 p = a(i) Mod 10 ' 求个位上的数字 If p = 0 Then p = 10 x(p) = x(p) + 1 Next i Form1.Print "统计结果" For i = 1 To 10

vb控件数组的习题及答案

vb控件数组的习题及答案

电子教室学生注册时姓名文本框部分请输入:如:1411111111李四学号+姓名,中间不加空格) 实验准备: 请同学们删除d:\ex21 文件夹里面的内容 如果没有ex21文件夹,请在d:\ 下新建 ex21 文件夹 1、打开D:\下的工程文件PROJECTA4.vbp和窗体文件FORMA4.frm,按以 下要求完成程序:在窗体上创建2个列表框、2个标签、2个命令按钮。 List1用于显示可选课程、List2用于显示已选课程。单击“选课”按钮, 将List1中选定的课程名称加入到List2中显示,单击“清空”按钮,将 删除List2中的所有课程。程序运行的参考输出格式如图A-4所示,可选 课程至少包含图A-4所示的6门。最后将工程文件、窗体文件按原文件 名保存在D:\EX21文件夹下。 图A-4

2、打开D:\下的工程文件PROJECTB4.vbp和窗体文件FORMB4.frm,按以下要求完成程序:在窗体上创建1个列表框、1个图片框、2个标签、2个命令按钮。List1用于显示可选课程、Picture1用于显示已选课程。单击“选课”按钮,将List1中选定的课程名称加入到Picture1中显示,单击“清空”按钮,将删除Picture1中的所有课程。程序运行的参考输出格式如图B-4所示,可选课程至少包含图B-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图B-4

3、打开D:\下的工程文件PROJECTA41.vbp和窗体文件FORMA41.frm,按以下要求完成程序:单击窗体,能产生10个两位的随机整数并存放在一维数组中,并能在窗体中输出该10个随机整数、最大数及其在10个数中的位置,要求使用语句强制显式声明模块中的所有变量,程序运行的参考输出格式如图A-41所示。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图A-41

【精选资料】VB控件 数组 过程复习题 参考答案2

常用标准控件作业 一、选择题 1.下列关于属性设置的叙述错误的是_______B__。 A.一个控件具有什么属性是Visual Basic预先设计好的,用户不能改变它 B.一个控件具有什么属性值是Visual Basic预先设计好的,用户不能改变它 C.一个控件的属性既可以在属性窗口中设置,也可以用程序代码设置 D.一个控件的属性在属性窗口中设置后,还可以再利用程序代码为其设置新值 2.以下过程是标签Label1的___A______事件。 Prviate Sub Label1_Click( ) End Sub A.单击 B.双击 C.拖拽 D.移动 3.下列控件中可设置滚动条是____C_____。 A.检查框(复选框) B.框架 C.文本框 D.标签框 4.标签所显示的内容,由___C______属性值决定。 A. Text B. Name C. Caption D. Alignment 5.定时器的定时间隔单位是__C_______。 A. 秒 B. 微秒 C. 毫秒 D. 分 6.检查框(复选框)的控件名称为______B___。 A. OptionBotton B. CheckBox C. PictureBox D. Image 7.若要求向文本框输入密码时,只在文本框中显示&号,则应当在此文本框的属性窗口中设置______D___。 A. Text属性值为& B. Caption属性值为& C. PasswordChar属性值为空 D. PasswordChar属性值为& 8.若要设置定时器的定时间隔,可通过__A_______属性来设置。 A. Interval B. Value C. Enabled D. Text 9.若要设置定时器的定时间隔设为5秒,应将Interval属性值设为_D________。 A. 5 B. 50 C. 500 D. 5000 10.若要使不可见命令按钮显示出来,可通过设置_____A____属性的值为True来实现。 A.Visible B.Enabled C.Default D.Value 11.若要使定时器起作用,应将其__D_______属性设置值设为True。 A.Interval B.Value C.Text D.Enabled 12.若要使命令按钮失效,可设置_____B____属性为False来实现。 A.Value B.Enabled C.Visible D.Cancel 13.若要向列表框新增列表项,可使用_____D____方法来实现。 A.Add B.RemoveItem C.Clear D.AddItem 14.要获得垂直滚动条Vscrollbar控件所能表示的最大值,可通过调用该控件的_____B____属性来实现。 A.Value B.Max C.Min https://www.360docs.net/doc/068874705.html,rgeChange 15.要将命令按钮上的文字设置为“粗体”可通过设置__B_______属性值为True来实现。 A.FontItalic B.FontBold C.FontUnderline D.FontSize 16.要将命令按钮上的文字设置为“斜体”可通过设置____A_____属性值为True来实现。 A.FontItalic B.FontBold C.FontUnderline D.FontSize 17.要将命令按钮上的字体设为“隶书”,可设置______C___的属性为“隶书”。 A.FontBold B.BackItalic C.FontName D.FontSize 18.以下选项中,不属于单选按钮属性的是____D_____ A.Enabled B.Caption https://www.360docs.net/doc/068874705.html, D.Min 19.组合框的风格可通过____C_____属性来设置。 A.BackStyle B.BorderStyle C.Style D.Sorted 20.标签的边框由_____C____属性的设置来决定。 A.BackColor B.BackStyle C.BorderStyle D.AutoSize 21.单选按钮的控件名称为____D_____。 A.Botton B.CheckBox C.PictureBox D.OptionBotton 22.单选按钮的当前状态可通过___A______属性来访问。 A.Value B.Checked C.Selected D.Caption 23.当滚动条中的滑块位置变化时,将触发其___C______事件。 A.LostFocus B.SetFocus C.Change D.GetFocus 24.假定Picture1和Form1分别为图片框和窗体的名称,以下语句___A______可清除图片框中的文本信息。 A.Picture1.cls B.Picture1.clear C.Form1.cls D.Form1.clear 25.确定一个窗体或控件的大小的属性是_____B____。 A.Width或Height B.Width和Height C.Top或Left D.Top和Left

VB程序设计的常用算法教案.doc

VB程序设计的常用算法教案 算法(algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。 本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x(1)中,个位是2的个数存放在x(2)中,......个位是0的个数存放在x(10)。 将程序编写在一个gettjput过程中,代码如下: public sub gettjput() dim a(1 to 100) as integer

dim x(1 to 10) as integer dim i as integer, p as integer '产生100个[0,99]范围内的随机整数,每行10个打印出来 for i = 1 to 100 a(i) = int(rnd * 100) if a(i) < 10 then form1.print space(2); a(i); else form1.print space(1); a(i); end if if i mod 10 = 0 then form1.print next i '统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数,并将统计结果保存在数组x(1),x(2),...,x(10)中,将统计结果打印出来 for i = 1 to 100 p = a(i) mod 10 ' 求个位上的数字 if p = 0 then p = 10 x(p) = x(p) + 1 next i form1.print "统计结果"

VB程序设计的常用算法

VB程序设计的常用算法 算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。 本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x(1)中,个位是2的个数存放在x(2)中,……个位是0的个数存放在x(10)。 将程序编写在一个GetTJput过程中,代码如下: Public Sub GetTJput() Dim a(1 To 100) As Integer Dim x(1 To 10) As Integer Dim i As Integer, p As Integer '产生100个[0,99]范围内的随机整数,每行10个打印出来 For i = 1 To 100 a(i) = Int(Rnd * 100) If a(i) < 10 Then Form1.Print Space(2); a(i); Else Form1.Print Space(1); a(i); End If If i Mod 10 = 0 Then Form1.Print Next i '统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数,并将统计结果保存在数组x(1),x(2),...,x(10)中,将统计结果打印出来 For i = 1 To 100 p = a(i) Mod 10 ' 求个位上的数字 If p = 0 Then p = 10 x(p) = x(p) + 1 Next i Form1.Print "统计结果" For i = 1 To 10 p = i If i = 10 Then p = 0 Form1.Print "个位数为" + Str(p) + "共" + Str(x(i)) + "个" Next i End Sub 二、求两个整数的最大公约数、最小公倍数 分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数) (1) 对于已知两数m,n,使得m>n; (2) m除以n得余数r; (3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4); (4) m←n,n←r,再重复执行(2)。 例如:求m=14 ,n=6的最大公约数. m n r

控件数组

在https://www.360docs.net/doc/068874705.html,中使用控件数组 控件数组是位于一个窗体上共享同一名称的一组同种类型控件。普通控件仅使用名称就可以识别,而引用控件数组中的成员则需要同时使用名称和索引。开发人员在Visual Basic 6.0 以及更早的版本中使用控件数组主要有以下三个理由: 1. 在循环中访问数组中控件的属性。 2. 向窗体动态添加新控件。 3. 允许一个事件例程与多个控件连接。 控件数组的使用,极大的方便了开发人员。然而,刚刚从Visual Basic6.0(以下简称VB6.0)过渡到Visual https://www.360docs.net/doc/068874705.html,(以下简称https://www.360docs.net/doc/068874705.html,)的初学者却发现,在https://www.360docs.net/doc/068874705.html,中似乎不能使用控件数组了。笔者仔细查阅了https://www.360docs.net/doc/068874705.html,的MSDN文档发现,在https://www.360docs.net/doc/068874705.html, 中,确实不再支持控件数组。原因是,https://www.360docs.net/doc/068874705.html,对事件模型作了很大的改动,引入了另外一种数据类型――控件集合模型,使控件数组没有存在的必要。就像VB6.0 中的控件数组可以共享事件一样,https://www.360docs.net/doc/068874705.html, 中的事件模型允许任何事件处理程序都可以处理来自多个控件的事件,这就允许创建属于不同类型但共享相同事件的控件组。 所谓控件集合是指包含在一个容器中的所有控件的总和,能够创建控件集合的容器有:Form、Panel、GropBox等。程序运行时,可以通过访问容器的Control属性来得到该容器中的所有控件。 下面将演示如何通过控件集合来使用控件数组: 一、直接使用Form容器的控件集合来使用控件数组: 建立一个https://www.360docs.net/doc/068874705.html,项目,在Form1中添加三个TextBox控件,名称分别为:TextBox1、TextBox2、TextBox3,一个Button控件。 双击Button,输入如下代码: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click …下面的语句是通过数组元素的下标来访问Form中的每一个元素。 Me.Controls.Item(0).Text = "集合中的第一个元素" Me.Controls.Item(1).Text = "集合中的第二个元素" Me.Controls.Item(2).Text = "集合中的第三个元素" Me.Controls.Item(3).Text = "集合中的第四个元素" End Sub 运行项目后,点击Button,看到的结果是:Form1中的所有控件(包括Button自己)的Text属性都被修改了,同时还发现,最后加入的的控件变成了集合中的第一个元素(下标为0)。这个结果说明: Form1中的所有控件已经自动构成了一个控件集合(控件数组),这个特点使得建立控件数组变得非常简单。 在访问这些控件时,除了可以通过控件名称直接访问外,还可以通过Contro.Item(n)属性按下标访问集合中的每一个控件; 集合中控件的类型可以不相同,这点和VB6.0完全不同; 集合中的下标顺序是按照加入控件的顺序倒排的; https://www.360docs.net/doc/068874705.html,中控件数组的特点让人稍感不适的是,控件数组的下标是按加入顺序的倒排续产生的,但程序员完全可以改变这个顺序:在代码编辑窗中点击“#Region " Windows 窗体设计器生成的代码”旁边的“+”号,代码展开后,找到如下代码: Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.TextBox3) Me.Controls.Add(Me.TextBox2) Me.Controls.Add(Me.TextBox1)

VB常用算法——排序

VB常考算法(八)排序: 1、算法 1)选择法排序 算法说明:根据上例中求最小值的思路,我们可以使用如下方法进行从小到大排序:第一轮,以第一个元素逐个跟后面的所有元素比较,如果比后面的元素大就进行交换,经过一轮比较,第一个元素被确定为最小;同样的方法,下一轮以第二个元素跟剩下的所有元素进行比较确定下次小的元素;以此类推… 下面我们以图形的形式体现对5个数进行选择排序的过程: 第一轮:第二轮: 第三轮: 从上图可以发现对5个元素进行排序,总共经过了5-1=4轮,而每一轮中比较的次数也不相同,第一轮2、3、4、5号元素参与跟1号元素的比较,共4次,第二轮3、4、5号元素参与跟2号元素的比较,共3次,以次类推,比较次数逐步减少。经过四轮的比较,利用逐步求最小值的方法将5个数从小到大排好序。对于这样一个排序的过程,我们可以使用两个循环分别控制比较的轮数和每一轮的次数。 程序代码: Private Sub Command1_Click() Dim n As Integer n = InputBox("请输入数组元素的个数:") Dim a() As Integer, i As Integer, j As Integer Print "排序前:" ReDim a(n) For i = 1 To n a(i) = Int(Rnd * (99 - 10 + 1) + 10) Print a(i); 最小值 次小值

Next i For i = 1 To n - 1 For j = i To n If a(i) > a(j) Then temp = a(i) '交换元素 a(i) = a(j) a(j) = temp End If Next j Next i Print Print "排序后:" For i = 1 To n Print a(i); Next i End Sub 2)冒泡法排序 算法说明:相邻的元素进行比较,如果前面的元素比后面的元素大,则将它们进行交换,具体思路:设在数组a 中存放n 个元素,第一轮,将a(1)和a(2)进行比较,若a(1)>a(2),则交换这两个元素的值,然后继续用a(2)和a(3)比较,若a(1)>a(2),则交换这两个元素的值,以此类推,直到a(n-1)和a(n)进行比较处理后,a(n)中就存放了n 个数中最大的值;第二轮,用a(1)与a(2),a(2)与a(3),…,a(n-2)与a(n-1)进行比较,处理方法相同,这一轮下来,a(n-1)中存放n 个数中第二大的值;…;第n-1轮,a(1)与a(2)进行比较处理,确保最小值在a(1)中。经过n-1轮比较处理,n 个数已经按从小到大的顺序排列好。 下面我们以图形的形式体现对5个数进行冒泡排序的过程: 第一轮: 第三轮: 第四轮: 最大值

VB程序设计的常用算法

VB 程序设计的常用算法 算法( Algorithm ):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生100 个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0 的数的个数并打印出来。 本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0 的数的个数。即个位是1 的个数存放在x(1) 中,个位是2 的个数存放在x(2)中,...................... 个位是0的个数存放在x(10)。 将程序编写在一个GetTJput过程中,代码如下: Public Sub GetTJput() Dim a(1 To 100) As Integer Dim x(1 To 10) As Integer Dim i As Integer, p As Integer '产生100 个[0,99]范围内的随机整数,每行 1 0个打印出来 For i = 1 To 100 a(i) = Int(Rnd * 100) If a(i) < 10 Then Form1.Print Space(2); a(i);

VB常用算法

VB常用算法(二)最值问题- - 1、算法说明 在若干数中求最大值,一般先取第一个数为最大值的初值(即假设第一个数为最大值),然后,在循环体内将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值,直到循环结束。 求最小值的方法类同。 求若干数平均值,实质上就是先求和,再除以这些数的个数。 应用举例 随机产生n个1-100(包括1和100)的数,求它们的最大值、最小值和平均值。 Private Sub Command1_Click() Dim n As Integer, i As Integer, min As Integer, max As Integer, aver As Single, s As Integer n = Val(InputBox("输入个数:")) s = Int(Rnd * 100) + 1 max = s min = s aver = s Print "第1个数是:" & s For i = 2 To n s = Int(Rnd * 100) + 1 Print "第" & i & "个数是:" & s If s > max Then max = s If s < min Then min = s aver = aver + s Next i aver = aver / n Print "max="; max; "min="; min; "aver="; aver End Sub 解题技巧 最大值、最小值、平均值类型题目往往和数组放在一起考!有的不仅求这些值,还要对具有最大值或者最小值的行或列或者某个元素进行处理,这时就要在记录最大、最小值时,同时记录该值所在的行号和列号。 2、实战练习 1)补充代码(2000春二(9)) 本程序的功能是在二维数组中查找鞍点元素,即该元素在所在行中为最大,且在所在列中为最小。在一个数组中可能存在,也可能不存在这样的元素。数组各元素的值从文件data.txt中读取。 Private Sub Form_Click() Dim a(3,3) As Integer,i As Integer,j As Integer Dim maxvr As Integer,col As Integer, As Integer Open data.txt For Input As #1 For i=1 To 3 For j=1 To 3 Input #1,a(i,j) Print a(i,j); Next j Print Next i For i=1 To 3 maxvr= (1) col=1 For j=2 To 3 If maxvr

vb控件数组的习题及答案

电子教室学生注册时姓名文本框部分请输入:如:1411111111李四学号+姓名,中间不加空格) 实验准备: 请同学们删除d:\ex21文件夹里面的内容 如果没有ex21文件夹,请在d:\ 下新建ex21文件夹 1、打开D:\下的工程文件PROJECTA4.vbp和窗体文件FORMA4.frm,按以下 要求完成程序:在窗体上创建2个列表框、2个标签、2个命令按钮。List1 用于显示可选课程、List2用于显示已选课程。单击“选课”按钮,将List1 中选定的课程名称加入到List2中显示,单击“清空”按钮,将删除List2 中的所有课程。程序运行的参考输出格式如图A-4所示,可选课程至少包含 图A-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21 文件夹下。 图A-4

2、打开D:\下的工程文件PROJECTB4.vbp和窗体文件FORMB4.frm,按以下要求完成程序:在窗体上创建1个列表框、1个图片框、2个标签、2个命令按钮。List1用于显示可选课程、Picture1用于显示已选课程。单击“选课”按钮,将List1中选定的课程名称加入到Picture1中显示,单击“清空”按钮,将删除Picture1中的所有课程。程序运行的参考输出格式如图B-4所示,可选课程至少包含图B-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图B-4 3、打开D:\下的工程文件PROJECTA41.vbp和窗体文件FORMA41.frm,按以下要求完成程序:单击窗体,能产生10个两位的随机整数并存放在一维数组中,并能在窗体中输出该10个随机整数、最大数及其在10个数中的位置,要求使用语句强制显式声明模块中的所有变量,程序运行的参考输出格式如图A-41所示。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。

VB常用算法总结

VB常用算法总结 一、变量值的交换 算法思想:若交换两个变量的值,必须引入第三个新的变量进行传递。 以下代码是错误的: X=12 :Y=34 :X=Y :Y=X 正确的代码是: X=12 :Y=23 :T=X :X=Y :Y=T 二、判断一个数是否能被另一个数整除 算法思想:可以用整除的定义(余数为0)或X除以Y等于X整除Y等表达式进行判断。 条件表达式可以为:X mod Y=0 或X\Y=X/Y 或Int(X/Y)=X/Y 如果以上条件表达式为True,则表示X能被Y整除。 三、累加、阶乘、计数和求平均值 算法思想:使用循环语句,并用一个变量存放累加的中间及最终结果。 注:累加求和时变量初值为0,计算阶乘时变量初值为1。 统计计个数(计数)时可用一个变量作为统计个数的累加变量,每次加1即可。 求平均值算法思想是先求和,再除以个数。 条件求和(或计数):在循环语句中加入If-End If判断语句。 例题:计算1到10之间所有整数的累加和以及10!。 n=10 sum=0 ‘累加求和时,变量的初值一定为0 prod=1 ‘累乘(连乘)时,变量的初值一定为1 For i=1 To n sum=sum+i prod=prod*i Next i Print sum,prod 例题:统计0—100之间能被3整除的数的个数、累加和及其平均值。 s=0 n=0 For i=0 To 100 If i mod 3 =0 Then s=s+i n=n+1 End If Next i Print n,s,s/n 四、随机数的产生 [a,b]之间的随机整数 Int((b-a+1)*rnd)+a (a,b)随机数 (b-a)*rnd +a 五、求若干个数中最大值或最小值 六、常用字符处理函数 Mid函数:从字符串指定位置取指定个字符,格式为Mid (字符,p,n) ,从第p个字符开始,向后截取n个字符(若n省略则取到最后)。 Left和Right函数:从字符串左边或右边取指定个字符,格式为Left (字符,n)和Right (字符,n)。 Len函数:测试字符串长度。 UCase和LCase函数:UCase将小写字母转换为大写字母;LCase将大写字母转换为小写字母。 Instr([首字符位置, ] 字符串1, 字符串2 [ , n]):在字符串1中查找字符串2,如果找到,返回字符串2的第一个字符在字符串1中出现的位置。首字符位置是可选的,如果不指定,从字符串起始位置开始查找;如果指明,从指定的位置开始查找。 Asc函数:返回字符串中第一个字符的ASCII码。 Chr函数:将一个数值转换为其所对应的字符。 字符的比较规则是按ASCII码顺序比较,规则为空格<”A”~”Z”<”a”~”z”

VB数组的初始化

所谓数组的初始化,就是给数组的各元素赋初值,前一节已经介绍过赋值语句或inputbox函数为数组元素赋值,这两种方法都需要占用运行时间。影响效率。为此,visual basic 提供了array函数。利用该函数,可使数组在程序运行之前初始化,得到初值。Array 函数用来为数组元素赋值。即把一个数据读入某个数组。 其格式为: 数组变量名=array(数组元素值) 例如:static a as variant A=array(1,2,3,4,5) 意思就是把1,2,3,4,5这5个数值赋给数组A的各个元素。即a(0)=1,a(1)=2,a(2)=3,a(3)=4,a(4)=5。注意,在默认情况下(在没有option base 1的情况下),数组的下标从0开始,数组A有5个元素。 如果加上option base 1,数组的下标从1开始,那数组A也是有5个元素,只不过每个元素的值和上面的不一样,即变为了a(1)=1,a(2)=2,a(3)=3,a(4)=4,a(5)=5对于字符串数组,其初始化操作相同。 对array函数的几点说明 数组变量名 = array(数组元素值) 1、该函数只适用于一维数组,即只能对一维数组进行初始化,不能对二维数组或多维数组进行初始化。 2、声明数组变量时,只能声明为变体(variant)类型,而不能是其他具体的数据类型。 如dim a as variant 或dim a 是正确的。 而dim a as integer 或 dim a as string 是错误的。 3、在定义数组变量时,可以不经定义而直接使用。 控件数组的基本概念 控件数组则一组相同类型的控件组成,这些控件共用一个相同的控件名称,具有相同的属性,事件和方法。数组中的每一个控件都有一个唯一的索引号index即下标,来标识它们。在属性窗口,通过属性窗口中的index属性就可以设置相同类型控件的下标。 在程序中,当有若干个控件执行大致相同的操作时,控件数组是很用的。控件数组共享同样的事件过程。例如,假定一个控件数组含有3个命令按钮command1,则不管单击哪一个按钮,都会调用同一个click事件。如果要确定单击的是哪一个按钮。则要通过其index 属性(即下标值)来进行确认。其单击事件过程代码格式: Private sub command1_click(index as integer) …… End sub 和只有一个按钮command1单击事件过程 Private sub command1_click

vb控件数组的习题及答案

电子教室学生注册时姓名文本框部分请输入:如:11李四学号+姓名,中间不加空格) 实验准备: 请同学们删除d:\ex21 文件夹里面的内容 如果没有ex21文件夹,请在d:\ 下新建 ex21 文件夹 1、打开D:\下的工程文件和窗体文件,按以下要求完成程序:在窗体上创建2个列表框、2个标签、2个命令按钮。List1用于显示可选课程、List2用于显示已选课程。单击“选课”按钮,将List1中选定的课程名称加入到List2中显示,单击“清空”按钮,将删除List2中的所有课程。程序运行的参考输出格式如图A-4所示,可选课程至少包含图A-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图A-4 2、打开D:\下的工程文件和窗体文件,按以下要求完成程序:在窗体上创建1个列表框、1个图片框、2个标签、2个命令按钮。List1用于显示可选课程、Picture1用于显示已选课程。单击“选课”按钮,将List1中选定的课程名称加入到Picture1中显示,单击“清空”按钮,将删除Picture1中的所有课程。程序运行的参考输出格式如图B-4所示,可选课程至少包含图B-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。

图B-4 3、打开D:\下的工程文件和窗体文件,按以下要求完成程序:单击窗体,能产生10个两位的随机整数并存放在一维数组中,并能在窗体中输出该10个随机整数、最大数及其在10个数中的位置,要求使用语句强制显式声明模块中的所有变量,程序运行的参考输出格式如图A-41所示。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图A-41

VB常用算法——排序

VB 常考算法(八)排序: 1、算法 1)选择法排序 算法说明:根据上例中求最小值的思路,我们可以使用如下方法进行从小到大排序:第一轮,以第一个元素逐个跟后面的所有元素比较,如果比后面的元素大就进行交换,经过一轮比较,第一个元素被确定为最小;同样的方法,下一轮以第二个元素跟剩下的所有元素进行比较确定下次小的元素;以此类推… 下面我们以图形的形式体现对5个数进行选择排序的过程: 第一轮: 第二轮: 第三轮: 从上图可以发现对5个元素进行排序,总共经过了5-1=4轮,而每一轮中比较的次数也不相同,第一轮2、3、4、5号元素参与跟1号元素的比较,共4次,第二轮3、4、5号元素参与跟2号元素的比较,共3次,以次类推,比较次数逐步减少。经过四轮的比较,利用逐步求最小值的方法将5个数从小到大排好序。对于这样一个排序的过程,我们可以使用两个循环分别控制比较的轮数和每一轮的次数。 程序代码: Private Sub Command1_Click() Dim n As Integer n = InputBox("请输入数组元素的个数:") Dim a() As Integer, i As Integer, j As Integer Print "排序前:" ReDim a(n) For i = 1 To n 62415264152641516425最小值 1642516425146251264512645次小值 1264512465124651246512456

a(i) = Int(Rnd * (99 - 10 + 1) + 10) Print a(i); Next i For i = 1 To n - 1 For j = i To n If a(i) > a(j) Then temp = a(i) '交换元素 a(i) = a(j) a(j) = temp End If Next j Next i Print Print "排序后:" For i = 1 To n Print a(i); Next i End Sub 2)冒泡法排序 算法说明:相邻的元素进行比较,如果前面的元素比后面的元素大,则将它们进行交换,具体思路:设在数组a中存放n个元素,第一轮,将a(1)和a(2)进行比较,若a(1)>a(2),则交换这两个元素的值,然后继续用a(2)和a(3)比较,若a(1)>a(2),则交换这两个元素的值,以此类推,直到a(n-1)和a(n)进行比较处理后,a(n)中就存放了n个数中最大的值;第二轮,用a(1)与a(2),a(2)与a(3),…,a(n-2)与a(n-1)进行比较,处理方法相同,这一轮下来,a(n-1)中存放n个数中第二大的值;…;第n-1轮,a(1)与a(2)进行比较处理,确保最小值在a(1)中。经过n-1轮比较处理,n个数已经按从小到大的顺序排列好。 下面我们以图形的形式体现对5个数进行冒泡排序的过程: 第一轮: 第 第三轮: 第四轮: 最 大值 1 4 5 6 4 1 2 4 1 2 4

VB_数组与记录教学练习题

第八章数组与记录 教学要求: 掌握一维、二维数组的定义、引用、初始化,掌握静态和动态数组及其差别,掌握数组的基本使用方法:数组元素的输入、输出和赋值等,掌握使用For Each...Next语句操作数组元素的方法;掌握控件数组的定义、建立和使用,掌握排序算法。掌握记录类型及记录数组的概念、记录变量的初始化及引用。 知识点: 数组的定义、引用、初始化;静态和动态数组及其差别;For Each...Next语句;控件数组。 熟练数组“遍历”算法的设计规律,冒泡排序、快速排序算法,顺序查找、有序表对分查找、字符查找算法。 内容导航: 一、数组的概念 (一)数组的定义 在Visual Basic中,可以用4个语句来定义数组,这4个语句格式相同,但适用范围不一样。Dim用在窗体模块或标准模块中,定义窗体或标准模块数组;ReDim、Static可用于过程中;Public 用在标准模块中,定义全局数组。 Visual Basic 提供两种格式: 第一种格式: 一维数组Dim 数组名(下标上界) As 类型名称 二维数组Dim 数组名(第一维下标上界,第二维下标上界) As 类型名称 第二种格式: Dim 数组名([下界To] 上界[,[下界To]上界]……) Dim 数组名([下界To[上界[,[下界To]上界]……) (二)默认数组 在Visual Basic中,允许定义默认数组。默认数组就是数据类型为Variant(默认)的数组。在一般情况下,定义数组应指明其类型。 二、动态数组 (一)动态数组的定义 动态数组以变量作为下标值,在程序运行过程中完成定义,通常分为两步:首先在窗体层、标准模块或过程中用Dim或Public声明一个没有下标的数组(括号不能省略),然后在过程中用ReDim 语句定义带下标的数组。 ReDim 语句格式:

相关文档
最新文档