主题:小菜一碟
newonesky
[专家分:0] 发布于 2005-06-22 13:28:00
求4!+5!+6!
S=0
n=4: gosub f:s=s+p
n=5: gosub f:s=s+p
n=6: gosub f:s=s+p
print “4!+5!+6!=”;s
end
f: p=1
for i=1 to n
p=p*i
next i
return
这样对吗,错在那里,请指出并解释
回复列表 (共14个回复)
沙发
moz [专家分:37620] 发布于 2005-06-22 15:10:00
我可以很生气,很负责任,很蛮不讲理,很霸道,毫不给情面的告诉你:理论上我认为它没有错.
但由此让我看到其中是不是有一个问题需要大家去验证一下的:
那个f:p=1中间的那个冒号究竟是标号还是分行号呢?
板凳
moz [专家分:37620] 发布于 2005-06-22 15:13:00
print jc(4)+jc(5)+jc(6)
function jc(a)
p=1
for i=1 to a
p=p*i
next
jc=p
end function
这是很多老手推荐使用的方式,
3 楼
88324837 [专家分:490] 发布于 2005-06-22 18:18:00
a=1*2*3
for b=4 to 6
a=a*b
s=s+a
next b
print b
这个是我这个老手推荐你的方法简单有简便
请给我打分哦
要高点的哦,你看我的分才这么点
4 楼
moz [专家分:37620] 发布于 2005-06-22 18:56:00
哦?斗上了?
?6*5*4*3*2*1 + 5*4*3*2*1 + 4*3*2*1
还可以简化成:
?(4*3*2)*(1+5+5*6)
干脆简化成:
?864
就行了
5 楼
prairiewolf [专家分:290] 发布于 2005-06-22 19:15:00
我感觉f:p=1中间的那个:应该去掉,或者把f 换成10,再去掉:
因为f在这里是一个程序的行号,且那个:在此则把f当成一句代码
6 楼
newonesky [专家分:0] 发布于 2005-06-22 19:51:00
但是运行不到,肯定没错吗?
7 楼
newonesky [专家分:0] 发布于 2005-06-22 19:59:00
结果是6
8 楼
moz [专家分:37620] 发布于 2005-06-22 20:13:00
f后面的那个冒号是标号没错,
只是为了不容易混淆,
建议别滥用分行号,而且标号应该长一点不易用混.
n=4
gosub f
s=s+p
n=5
gosub f
s=s+p
n=6
gosub f
s=s+p
还有,结果是6???????????????????????????????????????????????????
9 楼
moz [专家分:37620] 发布于 2005-06-22 20:15:00
WARNING: THIS MICROSOFT PRODUCT HAS BEEN TESTED AND CERTIFIED
FOR USE ONLY WITH THE MS-DOS AND PC-DOS OPERATING SYSTEMS.
YOUR USE OF THIS PRODUCT WITH ANOTHER OPERATING SYSTEM MAY
VOID VALUABLE WARRANTY PROTECTION PROVIDED BY MICROSOFT ON
THIS PRODUCT.
Press any key to continue
4!+5!+6!= 864
10 楼
prairiewolf [专家分:290] 发布于 2005-06-22 23:46:00
三楼的确实很简单,但是我认为应在s=s+a上加上s=0
我没有机会上机调试,所以还请你能批评
我来回复