integer sum=0,j,k,s=1
for j=1 to 5
for k=1 to j
s=s*k
next k
sum=sum+s
next j
在自学PB的时候这段代码不是很明白,请帮忙详细分析下!谢谢!
------解决方案--------------------
next后面的j 和k 是不是有点多余啊,
直接这样写
integer sum=0,j,k,s=1
for j=1 to 5
for k=1 to j
s=s*k
next
sum=sum+s
next
表示
1!+2!+3!+4!+5!
------解决方案--------------------
next后面的j 和k 也不能完全说是多余,在这里应该就像step为1一样可以写,也可不写吧,但写上显得更清楚明白一些。
下面是for...next语句的定义:
for-next循环指由for语句、next语句的循环三者构成的循环,它是一般格式为:
for [循环变量]=[循环变量初值] to [循环变量终值]
step [循环变量增量]
循环体
next [循环变量]
FOR语句称为"循环起始语句"或"循环说明语句",它的作用是确定循环变量的值如何变化,从而控制循环的次数。
"循环变量初值"、"循环变量终值"和"循环变量增量"可以是常数、变量或表达式。
NEXT语句是"循环终端语句",它的作用是标志循环结构的范围,在FOR语句和NEXT语句之间的语句的语句组就是循环体。每次循环执行到NEXT语句时,循环变量按步长增值。
请注意:
1.FOR语句与NEXT语句必须成对出现,缺一不可;
2.FOR语句必须在NEXT语句之前;
3.FOR语句中的"循环变量"与NEXT语句中的"循环变量"必须是同一变量。
4.如果步长为1,则"STEP"可以省略。
其他应该很清楚了,一楼正解
------解决方案--------------------
上面的分析是错误的,再分析一下:
你的程序有问题, integer sum=0,j,k,s=1,定义为整型,结果溢出,得不到正确结果,所以改为:
long sum=0,j,k,s=1
for k=1 to j
s=s*k
next k
上面这段是内循环,
for j=1 to 5
{内循环}
sum=sum+s
next j
上面这段是外循环
当j=1时,
内循环变为:
for k=1 to 1
s=s*k
next k
所以,s=1*1=1!
外循环的语句就是:sum=sum+1!=1!
省略步长,则步长为1,所以下一循环:j=2
当j=2时,
内循环变为:
for k=1 to 2
s=s*k
next k
经过两次循环,内循环结束,s=1!*1*2=2!
外循环的语句就是:sum=1!+2!
同样的进行,
当j=3时,
内循环变为:
for k=1 to 3
s=s*k
next k
经过两次循环,内循环结束,s=2!*1*2*3=12
外循环的语句就是:sum=1!+2!+12
当j=4时,
内循环变为:
for k=1 to 4
s=s*k
next k
经过两次循环,内循环结束,s=12*1*2*3*4=288
外循环的语句就是:sum=1!+2!+12+288
当j=4时,
内循环变为:
for k=1 to 5
s=s*k
next k
经过两次循环,内循环结束,s=12*1*2*3*4*5=34560
外循环的语句就是:sum=1!+2!+12+288+34560=34863
------解决方案--------------------
不好意思,再次更正:
上面的分析是错误的,再分析一下:
你的程序有问题, integer sum=0,j,k,s=1,定义为整型,结果溢出,得不到正确结果,所以改为:
long sum=0,j,k,s=1
for k=1 to j
s=s*k
next k
上面这段是内循环,
for j=1 to 5
{内循环}
sum=sum+s
next j
上面这段是外循环
当j=1时,
内循环变为:
for k=1 to 1
s=s*k
next k
所以,s=1*1=1!
外循环的语句就是:sum=sum+1!=1!
省略步长,则步长为1,所以下一循环:j=2
当j=2时,
内循环变为:
for k=1 to 2
s=s*k
next k
经过两次循环,内循环结束,s=1!*1*2=2!
外循环的语句就是:sum=1!+2!
同样的进行,
当j=3时,
内循环变为:
for k=1 to 3
s=s*k
next k
经过三次循环,内循环结束,s=2!*1*2*3=12
外循环的语句就是:sum=1!+2!+12
当j=4时,
内循环变为:
for k=1 to 4
s=s*k
next k
经过四次循环,内循环结束,s=12*1*2*3*4=288
外循环的语句就是:sum=1!+2!+12+288
当j=4时,
内循环变为:
for k=1 to 5
s=s*k
next k
经过五次循环,内循环结束,s=12*1*2*3*4*5=34560
外循环的语句就是:sum=1!+2!+12+288+34560=34863
------解决方案--------------------
.......
有些时候就是这样,出错了还很久都查不出原因。。。。
------解决方案--------------------
楼上的真细心,打那么多字。
------解决方案--------------------
4楼辛苦
------解决方案--------------------
呵呵,都辛苦了!!