VBS简单问题,5个数字的顺序排列!

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:28:04
本人刚刚学习VBS,看到一个题目是随机输入5个数字.在输入后能依照一定顺序排列...以下是小弟所写..填入数据之后会弹出来N次排列顺序,再最后一次会出现想要的答案..这个是为什么????
dim a(4)
dim i,j,k
for i=0to 4
a(i)=inputbox("请输入你的第"&i+1&"个数")
next
for i=0to 3
for j= i to 4
IF A(I)>A(J) then
k=a(j)
a(j)=a(i)
a(i)=k
msgbox ("5个随机数为: " & a(0) & "," & a(1) & "," & a(2) & "," & a(3) & "," & a(4))
end if
next
next

下面是我COPY的一份..
dim num(5)
dim i,n,t
'产生有随机数
for i=0 to 4
'让每次产生的随机数不一样
num(i)=InputBox("输入随机数")
num(i)=int(num(i)) '取整输入的数
next
'重新按小到大排列
for i=0 to 3
for n=i to 4
'比较
if num(i)< num(n) then
' 两个数值互换
t=num(i)
num(i)=num(n)
num(n)=t
End if
next
next

'输出 这5个数
msgbox ("5个随机数为: " & num(0) & "," & num(1) & "," & num(2) & ",

你的msgbox ("5个随机数为: " & a(0) & "," & a(1) & "," & a(2) & "," & a(3) & "," & a(4))
放错地方啦 所以把过程给显示出来
应该放在最后也就是两个next后 其他没问题 next就是使循环变量加上步长的值,也就是那设置的那个间隔 这里是1

先说说for... next....
for i=x to y step z
next

也就是说i的值从x开始,循环一次就加一次z ,一直循环到x>=y结束.

举个例子吧...
for i=1 to 5 step 2
'要执行的命令
next

i的值依次为1,3,5.
也就是说其中的命令执行了3次.

要知道为什么最后的结果才是正确的原因,必须先讲讲你的算法(你的算法好像有问题哈..).

你的算法是冒泡排序,也就是说两个数比较,如果前一个数比后一个数大,那么就交换位置.
所以你必须从a(0)开始,然后分别对a(1),a(2),a(3),a(4)逐个进行冒泡排序.

首先 对于a(0)来说,必须跟以后的a(1),a(2),a(3),a(4)逐个比较大小,总共要比较4次.
比较之后很容易知道a(0)>a(1).

a(0)排完之后, 我们要开始对a(1)进行冒泡排序.
对于a(1)来说,a(0)已经比它大,所以直接从a(2)开始比,总共要比较3次,排完之后易知a(0)>a(1)>a(2).

以此类推,可知对于数组中任意一个元素a(i),冒泡排序时从a(i+1)开始比起,一直比到a(4)结束.
也就是说

'对a(i)进行冒泡排序,这个不用我解释了吧....
for j=i+1 to 4
if a(i)>a(j) then
k=a