网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月04日
漏签
0
天
vb吧
关注:
156,290
贴子:
1,165,208
看贴
图片
吧主推荐
游戏
14
回复贴,共
1
页
<<返回vb吧
>0< 加载中...
尝试发帖
只看楼主
收藏
回复
流氓船长
求过二级
2
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这是怎么回事?按一下按钮,元素之和就改变一下,并且得数不对
惊鸿0_0
数据类型
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
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
klimaa
暴力枚举
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这个数选的好神奇。正好加1000。
在for each x in A()前加上
sum = 0
把next i 前面的语句
arraysum A()
放到后面就可以了。
tbzp666
暴力枚举
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
为什么要用For each,直接For不好么,还是在故弄玄虚,忽悠那些初学者
Nasal
Resp
基本语句
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”之间。
初音
七奈
钩子编程
15
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
将sum预先清零只是一种解决方案(在其他没有自动初始化的语言中是有必要写上这一句的),但更好的方案是将sum定义成局部变量,这样每次用到sum的时候都会自动清零,就无需额外进行清零操作了;你可以看一下,2楼的代码中并没有用到sum=0这一句
sunruisunrui
小吧主
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
尽量别用全局变量,然后变量命名记得换成有意义的单词,词组或者拼音。
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示