【vb程序题】运行下列过程,当输入一组数据:10,20,50,80,40,30,90,100,60,70,输出的结果应是

【vb程序题】运行下列过程,当输入一组数据:10,20,50,80,40,30,90,100,60,70,输出的结果应是
运行下列过程,当输入一组数据:10,20,50,80,40,30,90,100,60,70,输出的结果应该是( )
Sub p1( )
Dim i,j,arr(11) As Integer
k = 1
while k arr(j) Then
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
End If
Debug.Print arr(i)
Next i
End Sub
无序数列
不懂是怎么推出来的,
Borakaiser 1年前 已收到1个回答 举报

henrycat 幼苗

共回答了11个问题采纳率:90.9% 举报

在while循环k=1到k=10中,给数组赋值.
你分别输入10,20,50,80,40,30,90,100,60,70.
也就是说arr(1)=10,arr(2)=20.arr(10)=70

For i = 1 To 9 '从i=0 到 i =9循环,每循环一次i+1
j = i + 1 'j 总是比 i 大1
If arr(i ) > arr(j) Then '相当于arr(x) 与arr(x+1)比较,如果arr(x) > arr(y),则...
temp = arr(i) ' arr(x)先赋值给temp
arr(i) = arr(j) ' arr(x+1)赋值给arr(x)
arr(j) = temp 'temp再赋值给arr(x+1)
'三句加起来就是arr(x)与arr(x+1)的值互换
End If '整个if语句的作用就是如果arr(x) > arr(y),就把它们俩儿换过来
Debug.Print arr(i)
Next i '整个for循环就是给你的arr(1)到arr(10)排序

arr(1)=10 < arr(2)=20 ,不用换
arr(2)=20 < arr(3)=50 ,不用换
arr(3)=50 < arr(4)=80 ,不用换
arr(4)=80 > arr(5)=40 ,换过来,变成arr(4)=40 , arr(5)=80
到第五次循环
arr(5)=40 > arr(6)=30 ,换过来,变成arr(5)=30 , arr(6)=40
.
以此类推,最后循环结束得到
arr(1)到arr(10)分别为 10,20,50,40,30,80,90,60,70,100
因此还是无序数列.
要想变成有序数列,还需要在for循环外面再加一层for循环,让它们多次比较(也就变成某种排序方法了).

1年前

6
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.026 s. - webmaster@yulucn.com