一道VB题 希望各位大侠帮忙

求一位数组中各元素之和,最小数组元素,并将最小数组元素与数组中的第一个元素交换。代码如下:PrivateSubcommand1_Click()Dima,i%,min%,i... 求一位数组中各元素之和,最小数组元素,并将最小数组元素与数组中的第一个元素交换。
代码如下:
Private Sub command1_Click()
Dim a, i%, min%, imin%, sum%, t%
a = Array(26, 43, 61, 87, 33, 19, 37, 59, 76, 69)
min = a(0): imin = 0: sum = a(0)
For i = 1 To UBound(a)
sum = sum + a(i)
If a(i) < min Then min = a(i): a(imin) = i
Next i
t = a(0): a(0) = a(imin): a(imin) = t
Print "数组元素和="; sum, "最小元素值为:"; a(0)
End Sub

我有几个问题:
1 min = a(0),其中a(0)是什么意思呢?
2 为什么imin = 0
3为什么 sum = a(0)?这里的a(0)与min = a(0)的a(0)事一样的吗?
4 For i = 1 To UBound(a)这条语句中为什么不写成For i = LBound(a)To UBound(a)??1是什么意思呢?
5 我在VB中运行的时候结果是 数组元素和=510 最小元素值为:5
可是为什么最小元素值是5呢?Array(26, 43, 61, 87, 33, 19, 37, 59, 76, 69)中并没有5啊。。。
6 “ 并将最小数组元素与数组中的第一个元素交换”这句话在VB运行时怎么没有显示出来呢 ? imin 是数组中的第一个元素的意思吗,还是数组下标的意思???
希望各位大侠指教 我是VB初学者啊。。。好希望把它学好。。。讲解清楚的我再提高奖励。。小女子先谢谢了
展开
 我来答
尘入蜓孟影食1038
2012-08-20 · TA获得超过3512个赞
知道大有可为答主
回答量:2307
采纳率:87%
帮助的人:1346万
展开全部
1、a(0)就是下标为零的数组元素,也就是后面说的“第一个元素”;
2、imin是指最小元素(min)的下标,这里imin = 0就是暂时将a(0)当做最小的元素;
3、sum是指个元素之和,这里sum = a(0)首先把第一个元素写到sum里,后面通过um = sum + a(i)依次将其他元素加进来。所有的a(0)都是一样的,指当前的第一个元素;
4、因为前面已经处理了a(0),所以就下标从1开始,而不是用LBound(a);
5、这是编程错误引起的。具体的位置是If a(i) < min Then min = a(i): a(imin) = i中间的 a(imin) = i,这里本来是记录最小元素的位置i到imin中,但写程序的人搞错了,把最小的元素的序号i写到数组里面了(本数组最小的是第六个数19,下标为5),所以最后输出了5;
6、 t = a(0): a(0) = a(imin): a(imin) = t就是“将最小数组元素与数组中的第一个元素交换”的代码;imin上面已经说过了;

改错结果为:
Private Sub command1_Click()
Dim a, i%, min%, imin%, sum%, t%
a = Array(26, 43, 61, 87, 33, 19, 37, 59, 76, 69)
min = a(0): imin = 0: sum = a(0)
For i = 1 To UBound(a)
sum = sum + a(i)
If a(i) < min Then min = a(i): imin = i
Next i
t = a(0): a(0) = a(imin): a(imin) = t
Print "数组元素和="; sum, "最小元素值为:"; a(0)
End Sub

最后运行输出:
数组元素和= 510 最小元素值为: 19
liuyuwxj
2012-08-20 · TA获得超过2.6万个赞
知道大有可为答主
回答量:1777
采纳率:100%
帮助的人:1523万
展开全部
1、min = a(0),其中a(0)=26,就是假设数组a的第一个元素为最小值,即min=26;
2、第一点既然已经假设a(0)是最小值,那么现在最小值的下标当然是0了,所以imin = 0;
3、 sum = a(0),在这里是把数组第一个元素赋值给sum,方便下面计算。而这里的a(0)与min = a(0)的a(0)都是数组a的第一个元素,是一样的;
4、因为我们已经假设数组a的第一个元素为最小值了,那么下一步就是用这个最小值比较剩下的元素即可,而且现在最小值的下标是0了,那么从下标为1开始就行,所以不用For i = LBound(a)To UBound(a)。
5、因为你的代码错误,所以会显示5,应该把源代码中的a(imin) = i应改为imin = i即可;
6、 t = a(0): a(0) = a(imin): a(imin) = t的意思就是“ 将最小数组元素与数组中的第一个元素交换”。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
默落vb
2012-08-20
知道答主
回答量:12
采纳率:0%
帮助的人:4万
展开全部
1.a(0)=26 就是
a = Array(26, 43, 61, 87, 33, 19, 37, 59, 76, 69)这一语句中的第一个元素 a是数组 数组是从0开始记起
2.
If a(i) < min Then min = a(i): a(imin) = i 看着一句你应该明白了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式