回 帖 发 新 帖 刷新版面

主题:[讨论]找人帮忙看看哪里错了?

我做一位同学说的那个爬楼梯的问题
一次可以上一梯或2梯的
不知道哪里错了
老是出现 OVERFLOW


INPUT k
LET s = 0
LET m = 1
LET l = 1
LET r = 1
LET t = 1

IF k <= 0 THEN PRINT "I'm sorry ,I can't do  it like that!" ELSE
IF k MOD 2 = 0 THEN GOTO pat1 ELSE GOTO pat2
pat1: LET min = k / 2
       LET max = k
       LET a = min
       GOTO pat4
pat2: LET min = (a + 1) / 2
       LET max = k
       LET a = min
       GOTO pat4
pat4: WHILE a <= max
     LET q = (a - 10) * 2
            DO
                m = m * q
                q = q + 2
               IF q > a THEN EXIT DO
             LOOP
             DO
                l = l * r
                 r = r + 2
               IF r = q THEN EXIT DO
             LOOP
LET u = m / l
s = s + u
a = a + 1
WEND
PRINT s

回复列表 (共3个回复)

沙发

怎么都没人看的动吗?

板凳

以后程序多注释一点,看起来方便些,调试起来也方便
  从程序找到可能溢出的运算,只发现以下几条:
  ...
  m = m * q  
  q = q + 2      q从2a-20开始加2循环到大于a,循环次数为(20-a)/2 +1 次
                 a的初值为阶梯数的进一法的一半
  ...
  l = l * r
  r = r + 2
  ...
  LET u = m / l   若l<>0则不会除零溢出,根据程序l为0的可能性很低

  找不到问题,可惜我没有basic环境无法调试,无能为力,只好帮你顶

3 楼

l = l * r
计算多几次的时候l值溢出.

我来回复

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