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
展开
 我来答
cjyvio578436
2013-09-07 · 超过30用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:58.7万
展开全部
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时,的动作就没有了
忠成静0O
2013-09-07 · TA获得超过1049个赞
知道小有建树答主
回答量:1114
采纳率:100%
帮助的人:894万
展开全部
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
追答
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
请采纳,谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WYZZWB2011407d2e
高能答主

2019-01-09 · 最想被夸「你懂的真多」
知道大有可为答主
回答量:5.2万
采纳率:77%
帮助的人:7550万
展开全部
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退出循环,执行循环语句,计数器增加增量后重复以上步骤。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式