第18讲习题课

上传人:E**** 文档编号:91549409 上传时间:2019-06-29 格式:PPT 页数:15 大小:206.50KB
返回 下载 相关 举报
第18讲习题课_第1页
第1页 / 共15页
第18讲习题课_第2页
第2页 / 共15页
第18讲习题课_第3页
第3页 / 共15页
第18讲习题课_第4页
第4页 / 共15页
第18讲习题课_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《第18讲习题课》由会员分享,可在线阅读,更多相关《第18讲习题课(15页珍藏版)》请在金锄头文库上搜索。

1、数组习题讲解,一、数组的基本操作 1. 可通过循环给数组元素的初值 For i = 1 To 10 A数组的每个元素值为1 A(i)=1 Next i 2. 数组的输入 For i = 1 To 4 For j = 1 To 5 sc(i, j) = InputBox(“输入sc的值“) Next j Next I,3. 数组的输出 输出如下图所示的下三角数据,Dim sc(5,5) As Integer,i%,j% For i = 1 To 5 For j = 1 To i sc(i, j) = i * 5 + j Print sc(i, j); “ “; Next j Print 换行 N

2、ext I,二、 求数组中最大元素 Dim Max As Integer Max=A(1) For i = 2 To 10 If A(i)Max Then Max=A(i) End If Next I,三、For EachNext 语句 For EachNext 语句类似与For Next 语句,但前者专门针对一个数组或集合中的每个元素执行重复语句。一般格式为:,For Each 成员 In 数组 循环语句序列 Exit For 循环语句序列 Next 成员,For i=1 to 5 循环语句序列 Exit For 循环语句序列 Next i,For Each Next语句主要用来对数组元素进

3、行处理,包括查询、显示或读取。它执行的次数由数组元素的个数决定。如: Dim a(1 to 5) For Each x In a print x, Next,四、 排序问题 排序就是将一组数按递增或递减的次序重新排列。 排序的方法:选择法、冒泡法、插入法和合并排序。 1、选择法排序 算法描述(以递减为例): 1、将n个数放在数组a(1),a(2),a(n)。 2、从n个数中选出存放最大数的数组元素,然后将存放最大数的数组 元素中的数据与第一个数组元素的数据交换, 这为第一轮。 具体操作: 从n个数中选出存放最大数的数组元素的下标,放在变量k中,然后a(k) 与a(1)交换数据。 3、继续进行第

4、二轮、第三轮、直到第n1轮的操作。,程序实现:将数组中的6个数,用选择法递减顺序排列。,Dim a(6) As Integer Dim k, n, i, j, t As Integer Randomize n = 6 给数组6个元素赋值,09中的随机整数 For i = 1 To n a(i) = Int(Rnd * 9) + 1 Label2.Caption = Label2.Caption + Str(a(i) Next 选择排序法 For i = 1 To n - 1 k = i For j = i + 1 To n If a(j) a(k) Then k = j Next t = a(

5、k): a(k) = a(i): a(i) = t Next I for i=1 to n Label4.Caption = Label4.Caption + Str(a(i) Next i,2冒泡法排序 以递增为例: 算法思想:(将相邻两个数比较,小的调到前头) 1)将n个数存放在数组a(n)中, 2)第一轮将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置; 3)第二轮对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数; n个数共进行n-1趟比较,在第j趟中要进行n-j 次两两比较。,程序实现1: 将数组中的

6、6个数,用冒泡排序法排序。,Dim a(6) As Integer Dim k, n, i, j, t As Integer Randomize n = 6 给数组6个元素赋值,09中的随机整数 For i = 1 To n a(i) = Int(Rnd * 9) + 1 Label3.Caption = Label3.Caption + Str(a(i) Next 冒泡排序法 For i = 1 To n - 1 For j = 1 To n - i If a(j) a(j+1) Then t=a(j) a(j)=a(j+1) a(j+1)=t End if Next j Next i fo

7、r I=1 to n Label4.Caption = Label4.Caption + Str(a(i) Next,程序实现2: 将数组中的6个数,用冒泡排序法排序。,Dim a(6) As Integer Dim k, n, i, j, t As Integer Randomize n = 6 给数组6个元素赋值,09中的随机整数 For i = 1 To n a(i) = Int(Rnd * 9) + 1 Label3.Caption = Label3.Caption + Str(a(i) Next i 冒泡排序法 For i = 1 To n - 1 For j = n To i +

8、1 Step -1 If a(j - 1) a(j) Then 相邻元素比较 t = a(j) a(j) = a(j - 1) a(j - 1) = t End If Next j Next i 将排序结果显示在Label上 For I=1 to n Label4.Caption = Label4.Caption + Str(a(i) Next,五、 数组中元素的插入和删除操作 数组元素的插入、删除操作一般是在已排序好的数组中插入或删除一个元素,使得插入或删除以后的数组还是有序的。 1、插入 解题思路: 查找插入位置k(1k n-1); 从n1到k逐一往后移动一个位置,将第k个元素的位置腾出;

9、 将数据插入; 例如;设有一按升序排列的有n个元素的数组a(数组元素为整型),现 将一个数“11”插入后,仍保持其有序。,2,4,6,8,10,12,14,16,18,程序实现: Dim a%(1 to 20), i%, k%,x% 给数组元素赋值 For i = 1 To 9 a(i)=2*i Next x=inputbox(“输入要删除的值”) 查找插入的位置 For k = 1 To 9 If a(k)x Then Exit For Next 从k+1元素开始往前移动 For i = 9 To k step-1 a(i + 1) = a(i) Next I A(k)=x Print “插

10、入后:“; For i = 1 To 8 Print a(i); Next,2、删除 算法思想: 查找欲删除的元素所在的位置k; 从k1到n个位置逐个往前移动; 将数组个数减1;,2,4,6,8,10,11,12,14,16,例如:删除数组一个元素。设数组的元素为(2,4,6,8,10,11, 12,14,16),删除其中的元素“11”。,程序实现: Dim a(), i%, k %,x% ReDim a(1 To 9) 给数组元素赋值 a = Array(2, 4, 6, 8, 10, 11, 12, 14, 16) For i = 1 To 9 Print a(i); Next x=inp

11、utbox(“输入要删除的值”) 查找插入的位置 For k = 1 To 9 If a(k)=x Then Exit For Next 从k+1元素开始往前移动 For i = k + 1 To 9 a(i - 1) = a(i) Next 利用数组重新声明减少一个元素,但保持数组原来的值 ReDim Preserve a(1 To 8) 显示插入后的数组元素 Print “插入后:“; For i = 1 To 8 Print a(i); Next,六 交换数组中各元素 将数组的第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换,依次类推。 程序实现:,Option Base 1 Dim a() Dim i As Integer, t As String a = Array(2,4,6,8,10,1,3,5,7,9) Print “交换前:“; For i = 1 To 10 Print a(i); Next For i = 1 To 10 2 t = a(i) a(i) = a(10 - i + 1) a(10 - i + 1) = t Next Print: Print Print “交换后:“; For i = 1 To 10 Print a(i); Next,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号