|
|
||||
首页
文学作品 网页设计 平面设计 程序设计 考试认证 基础办公 QQ资源 服务器架设 网站运营 网页资源
|
|
|
| 汉南在线 → 考试认证 → 计算机二级 | |||||||||||
8.1 VB中的数组与其他语言中的数组有什么区别? 解:主要区别是其他语言中一个数组的每个元素必须是同一种类型的数据,而在VB中,一个数组中的各个元素可以是不同类型的数据。 8.2 在VB中可以通过哪几个语句定义数组?它们之间的区别是什么? 解:在VB中,可以用4个语句来定义数组,这4个语句格式相同,但适用范围不一样。 (1)Dim 用在窗体模块或标准模块中,定义窗体或标准模块数组,也可用于过程中。 (2)ReDim 用在过程中。 (3)Static 用在过程中。 (4)Public 用在标准模块中,定义全局数组。 8.3 用下面语句定义的数组中各有多少个元素? ①Dim arr(12) ②Dim arr(3 To 8) ③Dim arr(3 To 5,-2 To 2) ④Dim arr(2,4,6) ⑤Option Base 1 ⑥Option Base 1 Dim arr(3,3) Dim arr(22) ⑦Dim arr(-5 to 5) ⑧Option Base 1 Dim arr(-8 To –2,4) 解: ①13 ②6 ③15 ④105 ⑤9 ⑥22 ⑦11 ⑧28 8.4 从键盘上输入10个整数,并放入一个一维数组中,然后将其前5个元素与后5个元素对换,即:第1个元素与第10个元素互换,第2个元素与第9个元素互换……第5个元素与第6个元素互换。分别输出数组原来各元素的值和对换后各元素的值。 Option Base 1 Private Sub Form_Click() arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) Print "原来数组:" For i = 1 To 10 Print arr(i); Next i For i = 1 To 5 For j = 6 To 10 t = arr(i) arr(i) = arr(j) arr(j) = t Next j Next i Print "对换后数组:" For i = 1 To 10 Print arr(i); Next i End Sub
8.5 设有如下两组数据。 (1)2,8,7,6,4,28,70,25 (2)79,27,32,41,57,66,78,80 编写一个程序,把上面两组数据分别读入两个数组中,然后把两个数组中对应下标的元素相加,即2+79,8+27,……,25——80,并把相应的结果放入第三个数组中,最后输出第三个数组的值。 解: Option Base 1 Private Sub Form_Click() Dim A, B, C(8) As Integer A = Array(2, 8, 7, 6, 4, 28, 70, 25) B = Array(79, 27, 32, 41, 57, 66, 78, 80) For i = 1 To 8 C(i) = A(i) + B(i) Next i Print "第一个数组为:"; For i = 1 To 8 Print A(i); Next i Print "第二个数组为:"; For i = 1 To 8 Print B(i); Next i Print "第三个数组为:"; For i = 1 To 8 Print C(i); Next i End Sub 8.6 有一个n×m的矩阵,编写程序,找出其中最大的那个元素所在的行和列,并输出其值及行号和列号。 解: Option Base 1 Private Sub Form_Click() Dim Mat() As Integer Dim N, M As Integer N = InputBox("请输入矩阵的行数") M = InputBox("请输入矩阵的列数") ReDim Mat(N, M) As Integer For i = 1 To N For j = 1 To M Mat(i, j) = InputBox("请输入数组第" & Str(i) & "行第" & Str(j) & "列元素值") Next j Next i Print "所建立的矩阵为:" For i = 1 To N For j = 1 To M Print Mat(i, j); " "; Next j Next i Max = Mat(1, 1) For i = 1 To N For j = 1 To M If Max < Mat(i, j) Then Max = Mat(i, j) col = j row = i End If Next j Next i Print "矩阵最大的元素的值为:"; Mat(row, col) Print "它所在的行号为:"; row; ",列号为:"; col End Sub 8.7 编写程序,把下面的数据输入一个二维数组中。 25 36 78 13 12 26 88 93 75 18 22 32 56 44 36 58 然后执行以下操作: ①输出矩阵两个对角线上的数; ②分别输出各行和各列的和 ③交换第一行和第三行的位置; ④交换第二列和第四列的位置; ⑤输出处理后的数组。 解: Option Base 1
Private Sub Form_Click() Dim Mat(4, 4) As Integer Dim N, M As Integer N = 4 M = 4
Rem 输入矩阵 For i = 1 To N For j = 1 To M Mat(i, j) = InputBox("请输入数组第" & Str(i) & "行第" & Str(j) & "列元素值") Next j Next i
Rem 输出原始矩 Print "初始矩阵为:" For i = 1 To N For j = 1 To M Print Tab(6 * j); Mat(i, j); Next j Next i
Rem 输出矩阵对角线上的数 Print "矩阵对角线上的数为:" For i = 1 To N For j = 1 To M If i = j Then Print Tab(6 * j); Mat(i, j); End If Next j Next i
Rem 输出各行和各列的和 Print "各行的和依次为:" For i = 1 To N Sum = 0 For j = 1 To M Sum = Sum + Mat(i, j) Next j Print Sum; Next i Print "各列的和依次为:" For j = 1 To M Sum = 0 For i = 1 To N Sum = Sum + Mat(i, j) Next i Print Sum; Next j
Rem 交换第一行和第三行的位置 For i = 1 To N For j = 1 To M If i = 1 Then t = Mat(1, j) Mat(1, j) = Mat(3, j) Mat(3, j) = t End If Next j Next i
Rem 显示交换第一行和第三行后的矩 Print "交换第一行和第三行后的矩阵为:" For i = 1 To N For j = 1 To M Print Tab(6 * j); Mat(i, j); Next j Next i
Rem 交换第二列和第四列 For i = 1 To N For j = 1 To M If j = 2 Then t = Mat(i, 2) Mat(i, 2) = Mat(i, 4) Mat(i, 4) = t End If Next j Next i
Rem 显示交换第二列和第四列后的矩阵 Print "交换第二列和第四列后的矩阵为:" For i = 1 To N For j = 1 To M Print Tab(6 * j); Mat(i, j); Next j Next i End Sub 8.8 设有如表8.1所列的人员名册。试编写一个程序,对该名册进行检索。程序运行后,只要在键盘上输入一个人名,就可以在屏幕上显示出这个人的情况。例如,输入“张得功”,则显示 张得功 男 24 大学本科 河北 表8.1 人员名册 姓名 李得胜 王 丽 男 女 30 25 高中毕业 研究生 北京 山东 要求: ①使用动态数组,输入的人数可以根据实际情况改变; ②当检索名册中不存在的人名时,输出相应的信息; ③每次检索结束后,询问是否继续检索,根据输入的信息确定是否结束程序。 解: Option Base 1
Private Sub Form_Click() Dim arr(), s Dim n As Integer s = Array("姓名", "性别", "年龄", "文化程度", "籍贯") n = InputBox("请输入人数") ReDim arr(n, 5) For i = 1 To n For j = 1 To 5 arr(i, j) = InputBox("请输入第" & Str(i) & "个人的" & s(j)) Next j Next i
Print "输入的人员名册:" For i = 1 To n For j = 1 To 5 Print arr(i, j); " "; Next j Next i
Print "检索情况:" Do sn = InputBox("请输入要查找的名字") For i = 1 To n For j = 1 To 5 If sn = arr(i, 1) Then row = i Exit For Else row = 0 End If Next j If row <> 0 Then Exit For Next i Print "要检索的人名为:"; sn If row <> 0 Then For i = 1 To 5 Print arr(row, i); " "; Next i Else Print "没有要查找的信息" End If a = MsgBox("是否继续检索?", 19, "选择") If a <> 6 Then Exit Do End If Loop End Sub 8.9 某单位开运动会,共有10人参加男子100米短跑,运动员号和成绩见表8.2。 表8.2 运动员成绩表 运动员号 156 453 096 339 14.2 15.2 15.7 14.9 231 276 122 302 14.7 13.9 13.7 14.5 编写程序,按成绩排出名次,并按如下格式输出。 名次 运动员号 成绩 1 …… …… 2 …… …… 3 …… …… … …… …… 10 …… …… 解: Option Base 1
Private Sub Form_Click() Dim M, X M = Array(207, 156, 453, 96, 339, 77, 231, 176, 122, 302) X = Array(14.5, 14.2, 15.1, 15.7, 14.7, 15.1, 14.7, 13.9, 13.7, 14.5) Print , "名次", "运动员号", "成绩" For i = 1 To 9 For j = i + 1 To 10 If X(i) > X(j) Then t = X(i) X(i) = X(j) X(j) = t t = M(i) M(i) = M(j) M(j) = t End If Next j Print , i, M(i), X(i) Next i Print , 10, M(10), X(10) End Sub 8.10 编写程序,建立并输出一个10x10的矩阵,该矩阵对角线元素为1,其余元素为0。 解: Option Base 1
Private Sub Form_Click() Dim mat(10, 10) For i = 1 To 10 For j = 1 To 10 If i = j Then mat(i, j) = 1 Else mat(i, j) = 0 End If Next j Next i For i = 1 To 10 For j = 1 To 10 Print mat(i, j); Next j Next i End Sub 8.11 编写程序,实现矩阵转置,即将一个n´m的矩阵的行和列互换。例如,α矩阵为 1 2 3 1 4 α= 转置后的矩阵b为 b= 2 5 4 5 6 3 6 解: Option Base 1
Private Sub Form_Click() Const n = 2 Const m = 3 Dim a(n, m) As Integer, b(m, n) As Integer
For i = 1 To n For j = 1 To m a(i, j) = Int(Rnd * 90) + 10 Next j Next i
For i = 1 To n For j = 1 To m b(j, i) = a(i, j) Next j Next i
Print "矩阵α(转置前):" For i = 1 To n For j = 1 To m Print Tab(5 * j); a(i, j); Next j Next i Print "矩阵b(转置后):" For i = 1 To m For j = 1 To n Print Tab(5 * j); b(i, j); Next j Next i End Sub 8.12 编写程序,输出“杨辉三角形”。 杨辉三角形的每一行是(x+y)n的展开式的各项的系数。例如第1行是(x+y)0,其系数为1;第2行为(x+y)1,其系数为1;第3 行为(x+y)2,其展开式为x2+2xy+y2,系数分别为1,2,1……一般形式如下 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 …… 分析上面的形式,可以找出其规律:对角线和每行的第1列均为1,其余各项是它的上一行中前一个元素和上一行的同一列元素之和。例如第4行第3列的值为3,它是第3行第2列与第3列元素值之和,可以一般地表示为 α(i,j)=α(i-1,j-1)+ α(i-1,j) 请编写程序,输出n=10的杨辉三角形(共11行)。 解: Option Base 1 Private Sub Form_Click() Const N = 10 Dim Arr(N, N) As Integer For i = 1 To N Arr(i, i) = 1 Arr(i, 1) = 1 Next i For i = 3 To N For j = 2 To i - 1 Arr(i, j) = Arr(i - 1, j - 1) + Arr(i - 1, j) Next j Next i For i = 1 To N For j = 1 To i Print Arr(i, j); Next j Next i End Sub
| |||||||||||
| >> 相关文章 | |||||||||||
|
授权使用:汉南在线 http://hnzx.hzwz.net/ 经营许可证:陕ICP备05000109号 Powered by:汉南在线 Copyright (c) 2002-2008 汉南在线. All Rights Reserved . |