VB中for循环初值与终值的问题

OptionBase1PrivateSubCommand1_Click()Dimaa=Array(10,20,30)Forj=1Toa(j+1)k=1k=k*jnextj... Option Base 1
Private Sub Command1_Click()
Dim a
a = Array(10, 20, 30)
For j = 1 To a(j + 1)
k=1
k=k*j
next j
print j;k
end sub
运行结果为 11,10
第一次循环中为什么j =1作为初值后a(j+1)中j+1的值是1 而不是0呢?
展开
 我来答
wzq_wln
2013-03-29 · 超过11用户采纳过TA的回答
知道答主
回答量:128
采纳率:0%
帮助的人:36.1万
展开全部
哥哥你的执行结果不太对吧!
执行结果是21,20

Option Base 1

有上面的话,数组从1开始
所以a(j + 1) =20
执行完后j =21, 跳出循环
k=20
追问
弟弟,没错,我上机又试了一次,要不你再看看
追答
嗯,是我考虑的不足,错了,提问者采纳的是正解!
学习了。
l520lily
2013-03-29 · 超过29用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:73.7万
展开全部
  • 上面的答案正解。

  • 总的来说,不会影响你后面的情况,还是会在1到a(2)中循环

 

  • 这个没看到你定义 j,k。

  • 应该是前面定义为integer类型,而还没给它们赋值的情况(会被系统默认赋值为0)。

  • 刚运行到for  j = 1 To a(j + 1) 的时候,j还没有被赋值,暂时还被默认为等于0,所以j+1显示是1,但是运行到k=1的位置,也就是上面已经进行赋值了,就会显示为j=1,a(j+1)=20了,并不会影响你下面其他的计算。

     

  • 你可以试一下在前面赋值其他(比如-1),看是不是刚运行到for这个位置时,j 还显示为-1,运行到k=1,才变为 j=1.

 

  • 如果你想要第一次一进入到for  j = 1 To a(j + 1) 的时候 j 就为1,可以先在前面给j 赋值 1。

追问
好好学习了一下,谢谢!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zerosaga7
2013-03-29 · TA获得超过114个赞
知道答主
回答量:97
采纳率:0%
帮助的人:50.9万
展开全部
你运行结果错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式