当前位置:
文档之家› 2019最新第06章数组数学
2019最新第06章数组数学
题型:最大值和最小值
例题:随机产生 n 个两位整数,找出其中的最大值和最小值。
Dim min%, max%, n%, i%, a(100) As Integer
n = InputBox(vbCrLf + vbCrLf + "n=")
Print "产生的随机数为" Randomize For i = 1 To n a(i) = Int(Rnd * 90)+ 10
Visual Basic
第六章 数组
数组的概念
数组是变量的集合。
该集合中的所有变量名称相同、类型相同,下标
不同。例如: 数组名 Nhomakorabeaw(2)
下标
x(100, 20)
行标 列标
两种数组
静态数组:
在运行时总是保持固定的大小。
动态数组:
在运行时数组的大小可以改变。
数组的维数
一维数组 —— 数组元素具有一个下标。 二维数组 —— 数组元素具有两个下标。 n 维数组 —— 数组元素具有 n 个下标。
Private Sub Command开始_Click()
Dim a(2 To 1000) As Integer, i As Integer, j As Integer For i = 2 To 1000 a(i) = i Next i
用筛选法求素数
For i = 2 To 1000
If a(i) <> 0 Then
Print score(i); aver = aver + score(i) Next i : Print
题型:求和
aver = Round(aver / n , 1)
Print “平均成绩 = ”; aver Print “以下为高于平均成绩的成绩” For i = 1 To n If score(i) > aver Then Print score(i); Next i
题型:搜索
x = InputBox(“X=”) : t = False
For i = 1 To n If a(i) = x Then t = True : Exit For End If Next i If t Then Print "X="; x; "找到" Else Print "X="; x; "未找到" End If
Print a(i);
Next i : Print
题型:最大值和最小值
min = a(1) :max = a(1) For i = 2 To n If a(i) > max Then max = a(i)
If a(i) < min Then min = a(i)
Next i Print “最大值为 ”; max Print “最小值为 ”; min
题型:删除数组中的数据
x = InputBox("X=")
Print: Print "X="; x: Print flag = False For i = 1 To n If a(i) = x Then
flag = True
k=i Exit For End If Next i
题型:删除数组中的数据
If Not flag Then
Print “无可删除的数据" Else For i = k To n - 1 a(i) = a(i + 1)
Next I : n = n - 1
For i = 1 To n Print a(i); Next i End If
题型:统计
例题:统计用户从键盘上输入的1、2 和 3 的个数,当输入的数
Dim score(100) As Single, aver As Single
Dim n As Integer, i As Integer n = InputBox(vbCrLf + vbCrLf + "请输入学生人数") aver = 0 For i = 1 To n
score(i) = InputBox("请输入成绩")
End If
Next j Print a(i); Next i: Print a(20) End Sub
冒泡法排序
例题:利用随机函数产生 20 个 2 位的随机整数,按从大到小
的顺序进行排序。 Private Sub Command开始_Click() Dim a(20) As Integer, i As Integer Dim j As Integer, k As Integer
例如: a (3) b (12, 5) 一维数组 二维数组
c (2, 4, 8)
m (2, 3, …6)
三维数组
n 维数组
数组的声明
数组必须 先声明、后使用。
声明数组的四个属性
名称 维数
大小 类型
数组的声明
数组声明时的语法:
Dim 数组名(下标[,下标…]) [As 类型]
说明:1、“下标”的一般形式为: [下界 To ] 上界 如果不显式指定下标的“下界”,则缺省的下标下界为 0。 2、数组声明后,数值数组中的全部元素都初始化为 0,
…
x(10) = 100
…
逆序打印 n 个整数
逆序打印 n 个整数
Dim n As Integer, a(100) As Integer, i As Integer
n = InputBox(vbCrLf + vbCrLf + "n=") Print: Print "正序打印" For i = 1 To n a(i) = i Print a(i), Next i Print: Print: Print "逆序打印" For i = n To 1 Step -1 Print a(i), Next i
a(0)
a(1)
a(2)
… a(n)
一维数组
习题课
题型:求和
例题:从键盘上输入 n 个同学的考试成绩,输出高于平均成绩 的分数。( n < 100 ) 该问题可分三个步骤处理:
一、输入 n 个人的成绩;
二、求平均分数; 三、把这 n 个分数逐一和平均成绩进行比较, 若高于平均成绩,则打印输出。
题型:求和
Next i
x = InputBox(vbCrLf + “请输入学生成绩")
按分数段统计学生成绩
Do While x <> -1
a(Int( x/10)) = a( Int(x/10) ) + 1 x = InputBox(vbCrLf + “请输入学生成绩") Loop Print “0 ~ 59 =”; a(0)+a(1)+a(2)+a(3)+a(4)+a(5)
数组的声明
注意: 使用 Option Base 语句指定数组的下标下界从 1 开始。
Option Base 1
Dim a(4) As Single, b(-2 To 2, 2) As Single
a(1) a(2) a(3) a(4)
b(-2,1) b(-1,1) b(0,1) b(1,1) b(2,1)
值不在此范围内时结束输入,输出统计结果。 Option Base 1 Private Sub Command开始_Click() Dim a(3) As Integer, x As Integer, i As Integer For i = 1 To 3 a(i) = 0
Next i
题型:统计
x = InputBox(vbCrLf + "请输入一个数") Do While x >= 1 And x <= 3 a(x) = a(x) + 1 x = InputBox(vbCrLf + "请输入一个数")
Dim x As Integer, i As Integer Dim k As Integer, flag As Boolean n = InputBox(“N=”) Print For i = 1 To n a(i) = Int(90 * Rnd + 10)
Print a(i);
Next i: Print
Print a(i); For j = a(i) To 1000 Step a(i) a(j) = 0 Next j
End If
Next i : Print End Sub
题型:排序
选择法排序
冒泡法排序
选择法排序
例题:利用随机函数产生 20 个 2 位的随机整数,按从大到小
的顺序进行排序。
Private Sub Command开始_Click() Dim a(20) As Integer, i As Integer
Dim j As Integer, k As Integer
Randomize For i = 1 To 20 a(i) = 10 + Int(90 * Rnd) Print a(i);
Next i: Print: Print
选择法排序
For i = 1 To 19 For j = i + 1 To 20 If a(i) < a(j) Then k = a(i): a(i) = a(j): a(j) = k
Randomize
For i = 1 To 20 a(i) = 10 + Int(90 * Rnd) Print a(i); Next i: Print: Print