关于编程计算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呢,为什么呢? 展开
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呢,为什么呢? 展开
6个回答
展开全部
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
如果没有加上这条,结果就会错误。
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
如果没有加上这条,结果就会错误。
展开全部
For I = 1 to 2004
Sum=0
For J = 1 to I
Sum =Sum +J
Next J
Total=Total + Sum
Next I
print Total
你应该在每次里面的一个循环之前,都要SUM初始化为0 这样才是对的
Sum=0
For J = 1 to I
Sum =Sum +J
Next J
Total=Total + Sum
Next I
print Total
你应该在每次里面的一个循环之前,都要SUM初始化为0 这样才是对的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你算的没错,程序写错了。少了一句,应该是这样的:
Dim I As Integer, J As Integer, Sum As Double, Total As Double
For I = 1 To 5
For J = 1 To I
Sum = Sum + J
Next J
Total = Total + Sum
Sum = 0
Next I
Print Total
他忘记把sum清零了。。。。至于分析。。这个过程已经简单的不能再简单了,不知道怎么分析。
Dim I As Integer, J As Integer, Sum As Double, Total As Double
For I = 1 To 5
For J = 1 To I
Sum = Sum + J
Next J
Total = Total + Sum
Sum = 0
Next I
Print Total
他忘记把sum清零了。。。。至于分析。。这个过程已经简单的不能再简单了,不知道怎么分析。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
内层循环结束后,除了累加以外,还应该把sum清0,然后在进行下一次循环。
在Total=Total + Sum 语句后面添加一个语句
sum=0
加在 next i 前面,这样就等于35了
在Total=Total + Sum 语句后面添加一个语句
sum=0
加在 next i 前面,这样就等于35了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好奇怪 答案是35
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你每次J循环,sum没有清零,在下一次I循环中SUM是有参数的,当然不是35了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询