关于vb的一道题

dimaa=array(1,2,3,4,5,6,7)fori=Lbound(a)ToUbound(a)a(i)=a(i)*a(i)nextiprinta(i)输出的结果是... dim a
a=array(1,2,3,4,5,6,7)
for i=Lbound(a)To Ubound(a)
a(i)=a(i)*a(i)
next i
print a(i)
输出的结果是 程序出错(下标越界)。为什么呢?求 高手能帮我详细讲解?感激不尽
展开
 我来答
吾桐语
2012-09-03 · TA获得超过2914个赞
知道大有可为答主
回答量:1534
采纳率:94%
帮助的人:1088万
展开全部
Lbound(a)=0,陪滚Ubound(a)=6,第七次执芦带余行a(6)=a(6)*a(6)之后执行next i,则相当于i=i+1,即此时i=7,而之后print a(i),即a(7),但是数行迅组最后一个是a(6),所以下标越界。
更多追问追答
追问
“第七次执行a(6)=a(6)*a(6)之后执行next i,则相当于i=i+1 “ 这句话怎么理解?是i 总比a(i)多1的意思吗? i 是什么意思?a(i)又是什么意思呢?
追答
next i 的作用相当于i=i+步长,这里步长是1,即相当于i=i+1。
例如for i = 1 to 5 step 2……next i,第一次执行时,i=1,第二次循环时,i=3,这里i的变化就是next在起作用,(此处i=i+2)
所以在你的代码中,最后i=Ubound(a)+1=7,所以下标越界。
我表达能力有点差,如果不明白请继续追问。
jsj_01
2012-09-03 · TA获得超过566个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:201万
展开全部
你在
for i=Lbound(a)To Ubound(a)

前面输入掘颤尺print Lbound(a)
print Ubound(a)
就会判高知洞首道为什么了
追问
输出了
0
6
但是是什么意思呢?是下表上界为0,下界为6的意思吗?i 是什么意思呢?a(i)又是什么意思呢?
追答
是,i经过

for i=Lbound(a)To Ubound(a)
a(i)=a(i)*a(i)
next i
后i=7了,那么print a(i),实际上就是print a(7),下标超界了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式