vb中forj=i+1 to 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

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时,的动作就没有了
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-07
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
请采纳,谢谢!

第2个回答  2019-01-09
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退出循环,执行循环语句,计数器增加增量后重复以上步骤。

vb中forj=i+1 to 100什么意思
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...

怎样用循环结构vb计算1加到100结果显示在文本框?
接下来使用`for`循环从1迭代到100。循环的语法是`for i = 1 to 100`,表示`i`从1开始,每次循环增加1,直到达到100。在每次循环内部,使用`j=j+i`累加当前的`i`值到`j`。这意味着每次循环都会将`i`的值加到`j`上。循环结束后,使用`print j`输出最终累计的和。这样,程序会计算从1到10...

麻烦给这一部分的vb程序加一下注释
For i = 1 To 100先考察i位的元素,k = i‘把这个位放在变量k中保存,For j = i + 1 To 99把它和i+1位及以后的元素进行比较,If s(j) < s(k) Then k = j如果i位元素的值大,j位的值小,就把k的值更新为j.Next j T = s(i)’把k中保存的所指定的位置的元素与i位置的值...

vb里的二重循环 for i=1 to ubound(a)–1. for j=i+1 to ubo
j循环的开始是i+1的值,结尾是数组尾,也就是每次j的循环,都不扫描前i个数。

VB问题,数组s中的100个降序排序, '并将排序结果按紧凑格式打印_百度...
s(j)=t'最后把s(j)的值换成t,也是之前s(i)的值 '到这里就完成了位置的调换 '接下来就是不断循环这个过程来完成数组排序 end if next j next i 两两比较过程是这样的 s(1)&s(2),s(1)&s(3),s(1)&s(4)...s(1)&s(100)s(2)&s(3)...s(2)&s(100)...s(99)&s(100...

编程VB的for语句是什么意思,举例说明一下
For <循环变量>=<初赋值> To <终值> ……Next <循环变量> 循环的意思 其中上面的循环变量 可以用A B C D...Z等等 自己定义一遍变量 初始值 就是从那里开始循环 终止值就是到那里结束 最简单的例子 1+2+3+4...+100=? 加到100等于多少?就可以这样结算 FOR I=1 TO 100 a=a+I next ...

用VB编个程序,计算从1加到100。
For i As Integer = 1 To 100 sum += i Next Console.WriteLine("从1加到100的和为:" & sum)Console.ReadLine()End Sub End Module 这个程序使用了一个 `For` 循环来进行累加求和,初始值为 1,终止值为 100。在循环中,通过 `sum += i` 来将每个数字累加到 `sum` 变量上。最后,...

用VB编写程序,找出所有小于或等于100的自然数对。
Private Sub Command1_Click() For i = 1 To 99 For j = i + 1 To 100 t1 = Round(Sqr(i + j)) t2 = Round(Sqr(j - i)) If t1 * t1 = i + j And t2 * t2 = j - i Then Print "(" & i; ","; j; ")": n = n + 1 Next Next Print...

用VB如何写1到100之间所有能被3整除而不能被7整除的整数的和与个数的...
For i = 1 To 100If (i Mod 3 = 0 Or i Mod 7 = 0) And i Mod 21 <> 0 ThenPrint i,j = j + 1If j = 7 ThenPrintj = 0End IfEnd IfNext i 扩展资料 vb语言的特点: VB 的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单建立应用程序的GUI 系统,但是又可以开发...

帮解释一下VB中的排序代码
所以中冒泡排序。用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i, j的值依次为1,2,...10-i。

相似回答