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

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呢,为什么呢?

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
如果没有加上这条,结果就会错误。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-16
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 这样才是对的
第2个回答  2011-11-16
你算的没错,程序写错了。少了一句,应该是这样的:
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清零了。。。。至于分析。。这个过程已经简单的不能再简单了,不知道怎么分析。
第3个回答  2011-11-16
内层循环结束后,除了累加以外,还应该把sum清0,然后在进行下一次循环。
在Total=Total + Sum 语句后面添加一个语句
sum=0
加在 next i 前面,这样就等于35了
第4个回答  2011-11-16
好奇怪 答案是35
第5个回答  2011-11-16
因为你每次J循环,sum没有清零,在下一次I循环中SUM是有参数的,当然不是35了

...和:s=1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+4+…+n)?
sum([sum(range(i+1)) for i in range(1,31)])

编程实现求Sum=1+(1+2)+(1+2+3)+(1+2+3+4)+ …… +(1+2+3+4+ … +...
Sub test()n = InputBox("输入一个整数")su = 0 For i = 1 To n * 1 For j = 1 To i - 1 su = su + j Next su = su + i Next Print su End Sub

编写一个程序,计算下式之和: 1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+
int main(int argc, char** argv){ int num = 0; char *temp[100];int sum = 0, tmp = 0, pos = 0;do{ printf("请输入 N 值:");scanf("%d",&num) || scanf("%s", (char*)temp);if(num >= 1)break;}while(1);while(pos < num){ tmp += ++pos;sum += tmp;} ...

如何用c语言编程 求1+(1+2)+(1+2+3)+(1+2+3+4)……+(1+2+3+……+n
include<stdio.h>int main(){ int i,j,an,sum,n; scanf("%d",&n); for(i=1,sum=0;i<=n;i++) { for(j=1,an=0;j<=i;j++) an+=j; sum+=an; } printf("%d",sum); return 0;}

用C语言编写程序,求s=1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+…n)。
main(){ int n,i,j;long s=0;printf("Please input n:");scanf("%d",&n);for(i=1;i<=n;i++)for(j=1;j<=i;j++){ s+=j;} printf("s=1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+…+n)=%ld",s);} 利用for循环,根据式子的特性进行相加,得出最终结果。

用Java编写一个程序,计算s=1+(1+2)+(1+2+3)+…+(1+2+3+4+5+…+100...
public static void main(String[] args) { int sum = 0;for(int i = 1; i <= 100; i++){ int sumI = 0;\/\/calc (1+2+3) for 3 for(int j = 1; j <= i; j++){ sumI = sumI + j;} sum = sum + sumI;} System.out.println("1+(1+2)+(1+2+3)+…+(1+2+...

1+(1+2)+(1+2+3)+...+(1+2+3+...+n)
1+2+3+...+n=n(n+1)\/2=n^2\/2+n\/2 1+(1+2)+(1+2+3)+...+(1+2+3+...+n)=(1^2+2^2+3^2+---+n^2)\/2+(1+2+3+---+n)\/2 =n(n+1)(2n+1)\/12+n(n+1)\/4 =n(n+1)(n+2)\/6

求解s=1+(1+2)+(1+2+3)+...+(1+2+3...+n)
3^3-2^3=2*3^2+2^2-3 4^3-3^3=2*4^2+3^2-4 ...n^3-(n-1)^3=2*n^2+(n-1)^2-n 各等式全相加 n^3-1^3=2*(2^2+3^2+...+n^2)+[1^2+2^2+...+(n-1)^2]-(2+3+4+...+n)n^3-1=2*(1^2+2^2+3^2+...+n^2)-2+[1^2+2^2+...+(n...

...s=1+1\/(1+2)+1\/(1+2+3)+1\/(1+2+3+4)+...+1\/(1+2+3+...+n)_百度知...
include <stdio.h> int main(){ double s=0;int n,t=0;printf("请输入n\\n");scanf("%d",&n);int i;for(i=1;i<=n;i++){ t+=i;s+=1.0\/t;} printf("结果为:%f",s);return 0;}

Python求1+1+2+1+2+3+1+2+3+4+……+1+2+3+4+5…n前n项的和。
n=9listb=[]sumb=0for x in range(1,n+1): for y in range(1,x+1): listb.append(str(y)) lineb='+'.join(listb) sumb+=yprint("{}的和为{}".format(lineb,sumb))n可以任意改成你想要的数字 ...

相似回答