vb中forj=i+1 to 100什么意思
OptionBase1OptionExplicitDims(100)AsIntegerPrivateSubCommand1_Click()'设计程序产生100个任意的三位...
Option Base 1
Option Explicit
Dim s(100) As Integer
Private Sub Command1_Click()
'设计程序产生100个任意的三位整数存入数组s,并将这些数添加到List1列表框中。
Dim i%
List1.Clear
Randomize
For i = 1 To 100
s(i) = Int(Rnd * 900) + 100
List1.AddItem s(i)
Next i
End Sub
Private Sub Command2_Click()
'设计程序将保存在数组s中的100个任意数按降序排序,
'并将排序结果按紧凑格式打印在Picture1中,要求每行打印10个数。
Dim i%, j%, k%, tmp%
For i = 1 To 99
k = i
For j = i + 1 To 100
If s(j) > s(k) Then k = j
Next j
tmp = s(i)
s(i) = s(k)
s(k) = tmp
Next i
Picture1.Cls
For i = 1 To 100
Picture1.Print s(i);
If i Mod 10 = 0 Then Picture1.Print
Next i
End Sub
Private Sub Command3_Click()
End
End Sub 展开
Option Explicit
Dim s(100) As Integer
Private Sub Command1_Click()
'设计程序产生100个任意的三位整数存入数组s,并将这些数添加到List1列表框中。
Dim i%
List1.Clear
Randomize
For i = 1 To 100
s(i) = Int(Rnd * 900) + 100
List1.AddItem s(i)
Next i
End Sub
Private Sub Command2_Click()
'设计程序将保存在数组s中的100个任意数按降序排序,
'并将排序结果按紧凑格式打印在Picture1中,要求每行打印10个数。
Dim i%, j%, k%, tmp%
For i = 1 To 99
k = i
For j = i + 1 To 100
If s(j) > s(k) Then k = j
Next j
tmp = s(i)
s(i) = s(k)
s(k) = tmp
Next i
Picture1.Cls
For i = 1 To 100
Picture1.Print s(i);
If i Mod 10 = 0 Then Picture1.Print
Next i
End Sub
Private Sub Command3_Click()
End
End Sub 展开
3个回答
展开全部
Dim i%, j%, k%, tmp%
For i = 1 To 99
k = i
For j = i + 1 To 100
If s(j) > s(k) Then k = j
Next j
tmp = s(i)
s(i) = s(k)
s(k) = tmp
Next i
比如 这个数组(1,3,5,7,9,2,4,6,8)这几个数经过上面程序给排序实现的是
i=1 时,(8,3,5,7,9,2,4,6,1)第一次内循环结束了“8”和“1”对调位置
i=2 时,(8,6,5,7,9,2,4,3,1)第二次内循环结束了“6”和“3”对调位置
i=3时,(8,6,9,7,5,2,4,3,1)第三次内循环结束了“9”和“5”对调位置
i=4 时,(8,6,9,7,5,2,4,3,1)第一次内循环结束了,后边没有比“7”大的数了
i=5时,(8,6,9,7,5,2,4,3,1)第三次内循环结束了,后边没有比“5”大的数了
i=6时,(8,6,9,7,5,4,2,3,1)第三次内循环结束了“4”和“2”对调位置
i=7时,(8,6,9,7,5,4,3,2,1)第三次内循环结束了“3”和“2”对调位置
i=8时,(8,6,9,7,5,4,3,2,1)第三次内循环结束了“,后边没有比“2”大的数了
结束后排列顺序是(8,6,9,7,5,4,3,2,1)显然不满足程序中的注释
因此,此段程序和二楼所编写的程序不一样,二楼的编写程序可以实现,而楼主的根本不能实现将数组s中的100个任意数按降序排序,由于第二个循环语句中的k值从i 到100个数中只要比第 i 个数大的就被赋成 j 的当前值,最后只能将100-i 个数中的最后大于第 i 个数的值,与第 i 个数的值交换,而没有比较出其中最大的值,就是因为换值这个步骤没有在第二个循环体内部,所以不能实现,建议楼主将程序改写为
For i = 1 To 99
For j = i + 1 To 100
If s(j) > s(i) Then
tmp = s(i)
s(i) = s(j)
s(j) = tmp
End If
Next j
Next i
如果楼主认为自己的程序可用,还可以改为
For i = 1 To 99
k = i
For j = i + 1 To 100
If s(j) > s(k) Then k = j
tmp = s(i)
s(i) = s(k)
s(k) = tmp
Next j
Next i
至于k=i的作用就在于当在第二个循环体中判断语句为真时,不能将 j 的值赋给 i,如果赋给了i , 第一个循环体在下一次执行时就和原来跳变了,所以采用中间变量来实现。
比如上面的例子中执行我给的解法
(1,3,5,7,9,2,4,6,8)
i=1 时,(9,3,5,7,1,2,4,6,8)第一次内循环结束了“9”和“1”对调位置 用i 代替k 会使 i=5
下一次执行 就直接的跳变到了 i=6 时,而之前的i=2到i=5时,的动作就没有了
For i = 1 To 99
k = i
For j = i + 1 To 100
If s(j) > s(k) Then k = j
Next j
tmp = s(i)
s(i) = s(k)
s(k) = tmp
Next i
比如 这个数组(1,3,5,7,9,2,4,6,8)这几个数经过上面程序给排序实现的是
i=1 时,(8,3,5,7,9,2,4,6,1)第一次内循环结束了“8”和“1”对调位置
i=2 时,(8,6,5,7,9,2,4,3,1)第二次内循环结束了“6”和“3”对调位置
i=3时,(8,6,9,7,5,2,4,3,1)第三次内循环结束了“9”和“5”对调位置
i=4 时,(8,6,9,7,5,2,4,3,1)第一次内循环结束了,后边没有比“7”大的数了
i=5时,(8,6,9,7,5,2,4,3,1)第三次内循环结束了,后边没有比“5”大的数了
i=6时,(8,6,9,7,5,4,2,3,1)第三次内循环结束了“4”和“2”对调位置
i=7时,(8,6,9,7,5,4,3,2,1)第三次内循环结束了“3”和“2”对调位置
i=8时,(8,6,9,7,5,4,3,2,1)第三次内循环结束了“,后边没有比“2”大的数了
结束后排列顺序是(8,6,9,7,5,4,3,2,1)显然不满足程序中的注释
因此,此段程序和二楼所编写的程序不一样,二楼的编写程序可以实现,而楼主的根本不能实现将数组s中的100个任意数按降序排序,由于第二个循环语句中的k值从i 到100个数中只要比第 i 个数大的就被赋成 j 的当前值,最后只能将100-i 个数中的最后大于第 i 个数的值,与第 i 个数的值交换,而没有比较出其中最大的值,就是因为换值这个步骤没有在第二个循环体内部,所以不能实现,建议楼主将程序改写为
For i = 1 To 99
For j = i + 1 To 100
If s(j) > s(i) Then
tmp = s(i)
s(i) = s(j)
s(j) = tmp
End If
Next j
Next i
如果楼主认为自己的程序可用,还可以改为
For i = 1 To 99
k = i
For j = i + 1 To 100
If s(j) > s(k) Then k = j
tmp = s(i)
s(i) = s(k)
s(k) = tmp
Next j
Next i
至于k=i的作用就在于当在第二个循环体中判断语句为真时,不能将 j 的值赋给 i,如果赋给了i , 第一个循环体在下一次执行时就和原来跳变了,所以采用中间变量来实现。
比如上面的例子中执行我给的解法
(1,3,5,7,9,2,4,6,8)
i=1 时,(9,3,5,7,1,2,4,6,8)第一次内循环结束了“9”和“1”对调位置 用i 代替k 会使 i=5
下一次执行 就直接的跳变到了 i=6 时,而之前的i=2到i=5时,的动作就没有了
展开全部
For i = 1 To 99
k = i
For j = i + 1 To 100
在这里j是i的内循环
当i=1时 j=2 循环到 100
当i=2时 j=3 循环到 100
......
当i=99时 j=100 循环到 100
k = i
For j = i + 1 To 100
在这里j是i的内循环
当i=1时 j=2 循环到 100
当i=2时 j=3 循环到 100
......
当i=99时 j=100 循环到 100
追问
那为什么要让k=i
追答
k = i
For j = i + 1 To 100
If s(j) > s(k) Then k = j
Next j
这一段寻找比s(j)大的下标值为k,感觉有点多余,
建议将
For i = 1 To 99
k = i
For j = i + 1 To 100
If s(j) > s(k) Then k = j
Next j
tmp = s(i)
s(i) = s(k)
s(k) = tmp
Next i
改成:
For i = 1 To 99
For j = i + 1 To 100
If s(j) > s(i) Then
tmp = s(i)
s(i) = s(j)
s(j) = tmp
End If
Next j
Next i
请采纳,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
VB中for j=i+1 to 100,是循环语句的一种——For循环,这个For循环的计数器是j,初值是i+1,终止值为100。
在不知道循环要执行几次语句时,用Do循环,知道循环次数时,可以使用For…Next循环。For循环使用一个叫做计数器的变量,重复一次循环之后,计数器的值会增加或减少。For循环的语法如下:
For 计数器=初值To终止值 Step 增量
循环语句块
Next 计数器
计数器、初值、终止值和增量为数值型。增量为正时,初始值必须小于终止值,否则不能执行循环内的语句。增量为负时,则初始值必须大于终止值,这样才能执行循环体。执行For循环时,设置计数器等于初值,测试计数器是否大于终止值,计数器大于终止值,则Visual Basic退出循环,执行循环语句,计数器增加增量后重复以上步骤。
在不知道循环要执行几次语句时,用Do循环,知道循环次数时,可以使用For…Next循环。For循环使用一个叫做计数器的变量,重复一次循环之后,计数器的值会增加或减少。For循环的语法如下:
For 计数器=初值To终止值 Step 增量
循环语句块
Next 计数器
计数器、初值、终止值和增量为数值型。增量为正时,初始值必须小于终止值,否则不能执行循环内的语句。增量为负时,则初始值必须大于终止值,这样才能执行循环体。执行For循环时,设置计数器等于初值,测试计数器是否大于终止值,计数器大于终止值,则Visual Basic退出循环,执行循环语句,计数器增加增量后重复以上步骤。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询