回 帖 发 新 帖 刷新版面

主题:小菜一碟

求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个回复)

沙发

我可以很生气,很负责任,很蛮不讲理,很霸道,毫不给情面的告诉你:理论上我认为它没有错.

但由此让我看到其中是不是有一个问题需要大家去验证一下的:
那个f:p=1中间的那个冒号究竟是标号还是分行号呢?

板凳

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 楼

a=1*2*3
for b=4 to 6
a=a*b
s=s+a
next b
print b
这个是我这个老手推荐你的方法简单有简便
请给我打分哦
要高点的哦,你看我的分才这么点

4 楼

哦?斗上了?

?6*5*4*3*2*1 + 5*4*3*2*1 + 4*3*2*1
还可以简化成:
?(4*3*2)*(1+5+5*6)
干脆简化成:

?864
就行了

5 楼

我感觉f:p=1中间的那个:应该去掉,或者把f 换成10,再去掉:
因为f在这里是一个程序的行号,且那个:在此则把f当成一句代码

6 楼

但是运行不到,肯定没错吗?

7 楼

结果是6

8 楼

f后面的那个冒号是标号没错,
只是为了不容易混淆,
建议别滥用分行号,而且标号应该长一点不易用混.

n=4
  gosub f
  s=s+p        
n=5
  gosub f
  s=s+p        
n=6
  gosub f
  s=s+p 

还有,结果是6???????????????????????????????????????????????????

9 楼

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 楼

三楼的确实很简单,但是我认为应在s=s+a上加上s=0
我没有机会上机调试,所以还请你能批评

我来回复

您尚未登录,请登录后再回复。点此登录或注册