尝试发帖
vb吧
全部回复
仅看楼主
level 2
这是怎么回事?按一下按钮,元素之和就改变一下,并且得数不对
2024年04月27日 13点04分 1
level 6
SUM 是全局变量 ,求和之前重置sum
sum = 0
再求和
另外你把求和过程放到A(I) 赋值的循环内了,就不应该再去加所有元素
Private Sub Command1_Click()
Dim a(1 To 10) As Integer, sum As Integer, i As Integer
For i = 1 To 10
a(i) = i * 2 - 1
Print a(i);
sum = sum + a(i)
Next
Print
Print sum
End Sub
2024年04月27日 13点04分 2
大神啊,一个SUM=0 重置SUM就解决了[大拇指]
2024年04月28日 01点04分
level 9
这个数选的好神奇。正好加1000。
在for each x in A()前加上
sum = 0
把next i 前面的语句
arraysum A()
放到后面就可以了。
2024年04月28日 01点04分 3
确实是,重置一下SUM=0就可以了,谢谢!
2024年04月28日 01点04分
level 8
为什么要用For each,直接For不好么,还是在故弄玄虚,忽悠那些初学者
2024年04月28日 01点04分 4
这用法我也不会。
2024年04月28日 04点04分
@klimaa For 数组或集合中元素 in 数组或集合 \n 循环体 \n exit for \n next 数组或集合中元素
2024年04月28日 06点04分
@tbzp666 不是for each不会,是没这么用过。
2024年04月28日 06点04分
@klimaa 容易啊,也可以写一个求最大值,你是不习惯而已
2024年04月28日 06点04分
level 5
此处变量sum为全局变量,程序执行完一次后变量sum的值为数组A()中的数字的累加结果。
在程序执行下一次之前,变量sum的值仍为上一次数组A()中的数字的累加结果,于是执行下一次时,在上一次的累加结果上又开始累加,于是导致变量sum的值越来越大。
解决方法为:
效果:要使上一次的累加结果正常输出,并在执行下一次之前将变量sum的值归零,并要使归零的指令每次执行都能经过到。
代码:在“For Each x In A()”与“sum = sum + x”这两条语句之间插入一条语句“sum = 0”。
你的代码还有一个问题:
“ArraySum A()”这条语句被你放在了循环语句之内,这就导致了数组A()中,每加入一个数字,都会计算一次这些已加入的数字的总和。也就是说,代码被你这样写后,总和它给你这样计算:
1+(1
+3
)+(1+3+5)+(1+3+5+7)+(1+3+5+7+9)+(1+3+5+7+9+11)+...=385

正确的
效果应该是,数组A()中加入所有的数字后,只计算一次总和,也就是说,总和应该是这样计算的:
1+3+5+7+9+11+13+15+17+19=100
解决方法:
将语句“ArraySum A()”移至循环语句之后,也就是将语句“ArraySum A()”移至语句“Next i”与语句“Print”之间。
2024年04月28日 11点04分 5
level 15
将sum预先清零只是一种解决方案(在其他没有自动初始化的语言中是有必要写上这一句的),但更好的方案是将sum定义成局部变量,这样每次用到sum的时候都会自动清零,就无需额外进行清零操作了;你可以看一下,2楼的代码中并没有用到sum=0这一句
2024年04月28日 12点04分 6
吧务
level 12
尽量别用全局变量,然后变量命名记得换成有意义的单词,词组或者拼音。
2024年04月29日 14点04分 7
1