一到简单的VB题目,希望把步骤写下来

下面代码段打印的结果是:Privatesubform_click()DimIasinteger,a()asinteger,sumasintegerFori=1to5Red... 下面代码段打印的结果是:
Private sub form_click()
Dim I as integer,a() as integer,sum as integer
For i = 1 to 5
Redim a(i)
A(i)=i
Next i
For i = 1 to 5
Sum = sum + a(i)
Next I
Print sum,a(2)
End sub
答案我已经知道了,是5 0
但是具体是怎么出来的,希望大家写下步骤
还有上面的Redim a(i)是什么意思
谢谢!
展开
 我来答
百度网友80cd321
2008-05-24 · TA获得超过4362个赞
知道小有建树答主
回答量:1069
采纳率:0%
帮助的人:1182万
展开全部
Redim a(i)是建立动态数组,方法是用dim等声明一个括号内为空的数组,然后在过程中用Redim来指定数组的大小.
注意,每次使用Redim 会使原来数组中的值丢失.
在本例子中,用for i=1 to 5
Redim a(i)
则开始定义一个Redim a(1),Redim a(2),Redim a(3),Redim a(4)
Redim a(5).即对数组进行了5次定义.而最后有效的只有一个a(5).
而a(i)=i .即在a(5)这个数组中只有给定了一个值a(5)=5.没有定义的都是0.
所以在For i = 1 to 5
Sum = sum + a(i)
Next I
中.sum=0+0+0+0+5=5
a(2)=0
0871love
2008-05-24 · TA获得超过3517个赞
知道大有可为答主
回答量:1418
采纳率:50%
帮助的人:1528万
展开全部
Private sub form_click()
Dim I as integer,a() as integer,sum as integer
For i = 1 to 5 '这个循环的结果是A(1)~A(5)分别=1~5
Redim a(i) '重定义数组A,更改上限到i
A(i)=i
Next i

For i = 1 to 5 '这个循环的作用是将A(1)~A(5)的值都加到Sum变量中
Sum = sum + a(i) '将A(i)的值,加到Sum中
Next I
Print sum,a(2) '输出Sum及A(2)的值
End sub

这题不仔细看的话,得到的结果是 1+2+3+4+5=15
但结果不是这样,主要是因为 Redim在作怪,这个Redim每次重定义后,并没有将以前的结果保存起来,所以,到第5次Redim时,前面的四个都被初始化为0,只有第5个才是5
因此,A(1)+A(2)+...+A(5)=0+0+0+0+5 =5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
墨渍
2008-05-24 · TA获得超过2166个赞
知道大有可为答主
回答量:3442
采纳率:20%
帮助的人:867万
展开全部
因为在for里边,所以ReDim a(i)被定义了5次,估计只有最后一次循环的时候的a(5)定义成功了,然后接着给a(5)赋值为5。a(1)……a(4)都是0。
然后第二个循环计算的是sum=a(1)+a(2)+a(3)+a(4)+a(5)
结果sum=5,而a(2)是0。

如果
Private sub form_click()
Dim I as integer,a() as integer,sum as integer
Redim a(5)
For i = 1 to 5
A(i)=i
Next i
For i = 1 to 5
Sum = sum + a(i)
Next I
Print sum,a(2)
End sub
的话,结果就是“15 2”了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤本轻狂
2008-05-24 · TA获得超过211个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:204万
展开全部
Redim a(i) 动态定义数组

For i = 1 to 5
Redim a(i)
A(i)=i
Next i '该循环为动态定义数组,并给数组赋值,单因为数组没有定义为保留状态,所以只有最后一个a(5)=5保留,其余的a(1)..a(4)值为0.
For i = 1 to 5
Sum = sum + a(i)
Next I '此循环为计算,但因a(1)..a(4)都为0,所以sum=a(5)=5.

Print sum,a(2) '打印sum和a(2). sum=5,a(2)=0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhenghanxi
2008-05-24 · TA获得超过422个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:245万
展开全部
ReDim 用于指定或修改动态数组的大小,并初始化数组,也就是把数组内容全都=0,就像刚声明的一样。
For i = 1 to 5
Redim a(i)
A(i)=i
next
每次为a(i)赋值前都要先重新声明为i维,此时a(0 to i)=0,然后最后维=i,这样结束循环时,a(0 to 4)=0,a(5)=5
For i = 1 to 5
Sum = sum + a(i)
Next I
由于没有给sum赋值,其声明时初始值为0,sum=a(0)+a(1)+……+a(5)=5
a(2)=0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式