
vb中的步长 step求精确解释,高手请进
step的取值是否有个范围或者限制,比如小数点,或者step是个变量是否可以实在看不太懂step,比如fori=1tonstep2这段语句中的1是否可以写为带小数点的,如...
step的取值是否有个范围或者限制,比如小数点,或者step是个变量是否可以
实在看不太懂step,比如
for i =1 to n step 2
这段语句中的1是否可以写为带小数点的,如果可以,又该怎么理解这个步长
然后,这个2,如果改成带小数点的,又该怎么理解
再然后,step 2,能否把2换成一个变量
比如我想让步长的变化跟随计算步数的变化而变化,比如1 2 3 4...n累加
此时的step为1,累加到第二个数字时step为2,累加到第三个数字时step为3
那么就是1 2 4 7 11....n这样一组数字了,但此时的n已经不代表步数了,应该是个和步数有关的函数值了吧。如果这样应该怎么写这段代码
再有,我自己写了一段,结果是VB死机(汗),求原因
Private Sub Text1_Change()
Dim i As Integer, sum As Long, n As Integer, a As Integer
n = Val(Text1.Text)
For i = 1 To n Step a
sum = sum + i
a = sum
Next i
text2.text = sum
End Sub
基本上就这些了,请高手不吝赐教 展开
实在看不太懂step,比如
for i =1 to n step 2
这段语句中的1是否可以写为带小数点的,如果可以,又该怎么理解这个步长
然后,这个2,如果改成带小数点的,又该怎么理解
再然后,step 2,能否把2换成一个变量
比如我想让步长的变化跟随计算步数的变化而变化,比如1 2 3 4...n累加
此时的step为1,累加到第二个数字时step为2,累加到第三个数字时step为3
那么就是1 2 4 7 11....n这样一组数字了,但此时的n已经不代表步数了,应该是个和步数有关的函数值了吧。如果这样应该怎么写这段代码
再有,我自己写了一段,结果是VB死机(汗),求原因
Private Sub Text1_Change()
Dim i As Integer, sum As Long, n As Integer, a As Integer
n = Val(Text1.Text)
For i = 1 To n Step a
sum = sum + i
a = sum
Next i
text2.text = sum
End Sub
基本上就这些了,请高手不吝赐教 展开
10个回答
展开全部
for i.. to .. step a
1.如果i是integer,且a为固定的小数,设第一次循环i=1,i+a后的小数i要进行四舍五入取整,再执行循环体,而a的值是不变的。
2.如果i是single,且a为小数,则下次循环的i不用取整了,a的值还是不变的。
3.a想定义成变量的话,在单层循环中,是无法实现的,但嵌套的可以改变内层循环的步长。
a=1
'a要赋初始值,否则死循环。
for i.. to ..
for j.. to .. step a
……
next
a=a+1
next
此时的a是可以间接改变的。
4.你的程序中的a 没有值,默认的值为0,步长为0,循环中的i永远是1,而sum一直累加,当达到long的最大值后,就出现溢出错误。
1.如果i是integer,且a为固定的小数,设第一次循环i=1,i+a后的小数i要进行四舍五入取整,再执行循环体,而a的值是不变的。
2.如果i是single,且a为小数,则下次循环的i不用取整了,a的值还是不变的。
3.a想定义成变量的话,在单层循环中,是无法实现的,但嵌套的可以改变内层循环的步长。
a=1
'a要赋初始值,否则死循环。
for i.. to ..
for j.. to .. step a
……
next
a=a+1
next
此时的a是可以间接改变的。
4.你的程序中的a 没有值,默认的值为0,步长为0,循环中的i永远是1,而sum一直累加,当达到long的最大值后,就出现溢出错误。
展开全部
好几个月没回答问题了,今天回答下你的问题
先回答你第一个问题,不管是i还是step都是可以带小数点的,只要你把i的数据类型改成double,如果是integer类型那么整数类型又怎么带小数呢?
Private Sub Command1_Click()
Dim i as double
For i = 1 To 10 Step 1.2
Print i
Next
End Sub
然后回答你第二个问题,step 2 是可以改成变量的,但是实际意义是没的。
Private Sub Command2_Click()
Dim i as double
i = 1
For i = 1.2 To 20 Step i
Print i
Next
End Sub
因为在运行的时候,step i 这里的i被i=1代替,其实就是step 1.看我这个例子你可以清楚的看到,这里的i一直是1不变的。因为你一直在这个循环中,而i的值一直是没循环前的i=1.
最后回答下你的代码的问题。
Private Sub Text1_Change()
Dim i As Integer, sum As Long, n As Integer, a As Integer
n = Val(Text1.Text)
For i = 1 To n Step a
sum = sum + i
a = sum
Next i
text2.text = sum
End Sub
其实运行的时候就是一个死循环,因为你a没赋值,那么默认a=0,就是step 0,直接进入死循环。
不信你尝试写代码:
Private Sub Text1_Change()
Dim i As Integer, sum As Long, n As Integer, a As Integer
n = Val(Text1.Text)
print a '可以得出a是0,所以死循环。
For i = 1 To n Step a
sum = sum + i
a = sum
Next i
Text2.Text = sum
End Sub
马上就得出我说的结果了。
你可以把你想达到的目的跟我说,我私下给你写下代码。
回答完毕。
先回答你第一个问题,不管是i还是step都是可以带小数点的,只要你把i的数据类型改成double,如果是integer类型那么整数类型又怎么带小数呢?
Private Sub Command1_Click()
Dim i as double
For i = 1 To 10 Step 1.2
Print i
Next
End Sub
然后回答你第二个问题,step 2 是可以改成变量的,但是实际意义是没的。
Private Sub Command2_Click()
Dim i as double
i = 1
For i = 1.2 To 20 Step i
Print i
Next
End Sub
因为在运行的时候,step i 这里的i被i=1代替,其实就是step 1.看我这个例子你可以清楚的看到,这里的i一直是1不变的。因为你一直在这个循环中,而i的值一直是没循环前的i=1.
最后回答下你的代码的问题。
Private Sub Text1_Change()
Dim i As Integer, sum As Long, n As Integer, a As Integer
n = Val(Text1.Text)
For i = 1 To n Step a
sum = sum + i
a = sum
Next i
text2.text = sum
End Sub
其实运行的时候就是一个死循环,因为你a没赋值,那么默认a=0,就是step 0,直接进入死循环。
不信你尝试写代码:
Private Sub Text1_Change()
Dim i As Integer, sum As Long, n As Integer, a As Integer
n = Val(Text1.Text)
print a '可以得出a是0,所以死循环。
For i = 1 To n Step a
sum = sum + i
a = sum
Next i
Text2.Text = sum
End Sub
马上就得出我说的结果了。
你可以把你想达到的目的跟我说,我私下给你写下代码。
回答完毕。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的想法是可行的,可以实现相关功能.
但是这个题中可能会存在数据类型错误的问题
a 的数据类型是:Integer型,而sum是Long型,
当 a = sum 时系统会自动变换类型。
最大的问题是这是一个死循环。
在这道题中变量a 就没了限制,会一真循环下去。
不过你的想法在这个题中应该不可行。
当死机时按CTRL+B可停止。
你可以反复试验,证实自己的想法。
如果步长是变量,是一个很复杂的运算过程。会加大计算机的运算量,一般不建议这么做。步长是可以是小数的,尽量采用定值。
祝你好运。
但是这个题中可能会存在数据类型错误的问题
a 的数据类型是:Integer型,而sum是Long型,
当 a = sum 时系统会自动变换类型。
最大的问题是这是一个死循环。
在这道题中变量a 就没了限制,会一真循环下去。
不过你的想法在这个题中应该不可行。
当死机时按CTRL+B可停止。
你可以反复试验,证实自己的想法。
如果步长是变量,是一个很复杂的运算过程。会加大计算机的运算量,一般不建议这么做。步长是可以是小数的,尽量采用定值。
祝你好运。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
想不到这里的高手还是多呢,你的问题问的很有研究精神,他们都回答的很好很强大。
事实上如周胜亿所说,“第一次进入for循环 就设定了 步长,以后步长就固定下来了”,和提问乱码等所说“步长是可以用变量的..并且用变量在骗程中还是经常用到的”。
我认为,VB在第一次遇到for循环,下界上界步长都已经确定,上界下界步长如果为变量,在此刻还是为for循环提供的常量,在循环内如何的重设变量的值,都不会影响for循环。因此,对于上界下界不确定的,最好不要用for循环,用while循环会比较好,对于步长是变量的,不要设步长,最好在for循环结构的的next之前一句设定步长变量。
当然,你也可以用单步调试来证明,第一次循环到next时,下一句将是for后面的一句。
事实上如周胜亿所说,“第一次进入for循环 就设定了 步长,以后步长就固定下来了”,和提问乱码等所说“步长是可以用变量的..并且用变量在骗程中还是经常用到的”。
我认为,VB在第一次遇到for循环,下界上界步长都已经确定,上界下界步长如果为变量,在此刻还是为for循环提供的常量,在循环内如何的重设变量的值,都不会影响for循环。因此,对于上界下界不确定的,最好不要用for循环,用while循环会比较好,对于步长是变量的,不要设步长,最好在for循环结构的的next之前一句设定步长变量。
当然,你也可以用单步调试来证明,第一次循环到next时,下一句将是for后面的一句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
For i = 1 To n Step a
sum = sum + i
a = sum
Next i
for 循环中 的步长 可以是变
但要注意,第一次进入for循环 就设定了 步长,以后步长就固定下来了
你的a 在第一次 进入循环是的值是null,以后不管a怎样变化,步长始终为null,因此出现了死循环
sum = sum + i
a = sum
Next i
for 循环中 的步长 可以是变
但要注意,第一次进入for循环 就设定了 步长,以后步长就固定下来了
你的a 在第一次 进入循环是的值是null,以后不管a怎样变化,步长始终为null,因此出现了死循环
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |