关于编程计算1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+4+…2004)

DimIasInteger,JasInteger,SumasDouble,TotalasDoubleForI=1to2004ForJ=1toISum=Sum+JNextJ... Dim I as Integer, J as Integer, Sum as Double, Total as Double For I = 1 to 2004 For J = 1 to I Sum =Sum +J Next J Total=Total + Sum Next I print Total 我知道是上面这个程序,但是我的疑问是过程能不能有高人帮我分析下,另外我疑惑的是,我把2004改成5来验证这个程序正确否,得到的答案是70,我自己用笔算是35呢,为什么呢? 展开
 我来答
创作者sGnYABDPqB
2019-06-26 · TA获得超过3771个赞
知道大有可为答主
回答量:3072
采纳率:25%
帮助的人:155万
展开全部
1、i和j都是临时变量
2、sum表示的是每一个括弧内的数字相加之和即(1+2)...(1+2+3...2004)
3、total表示的是全部的和,即每一个sum的和
首先外循环:主要用于从1开始,计算最后的total
For
I
=
1
to
2004
××××××
Total=Total
+
Sum
//每次本上次的结果加上新的sum(也就是括弧里边的数字之和)
Next
I
内循环:主要用于括弧里边的数字相加,但是2004个括弧,每个括弧里的数字是不同的,每个括弧里的数字的和与他所在的位置有关,第1个数是从
1到1的相加,第2个数是从2
到2
的相加,第2004个数是1到2004的相加,从而推断出,第n个数是从1到n的相加,所以内循环写成如下形式:
For
J
=
1
to
I
Sum
=Sum
+J
Next
J
关于你的验证,你算的是正确的,这个程序有BUG,注意应当在每个外循环将sum加入total后,还应当将sum清零,否则sum本身也会一直在累加:
即:
Total=Total
+
Sum
Sum=0
如果没有加上这条,结果就会错误。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式