回 帖 发 新 帖 刷新版面

主题:求偶数的程序,请看看怎么回事呀??

第一:
   SUB Os(n,h)
   IF n MOD 2=0 THEN h=n
   END SUB

   DECLARE SUB Os(n,h)
     FOR i=1 TO 100
      CALL Os(i,h)
      PRINT  h,
     NEXT i
   END
问题是同一个数总是打印出两遍来.错在那呢??
第二:
    FUNCTION Os(n)
    IF n MOD 2=0 THEN Os=n
    END FUNCTION

    DECLARE FUNCTION Os(n)
      FOR i=1 TO 100
        PRINT  Os(i)
      NEXT i
      END
   问题是两偶数间总是间隔一个0.
请高手指点一下,还有,我想将PRINT 语句写在主程中.

回复列表 (共6个回复)

沙发

第三:
   DECLARE SUB Os(n,h)
   CLS
   DATA 1, 2, 3, 4, 5 , 9 ,12 ,-14 ,-15, 16, 89,
    FOR 1 TO 12
      READ d
      CALL (d ,h)
      PRINT h,
    NEXT i
    END

   SUB  Os(n,h)
    IF n MOD 2 THEN h=n
   END SUB
问题是相同的数字会打印出两遍来,还有FOR 语句中的12必须要等于DATA中数的个数才行,否则就会出错。能不能,不用事先知道NATA中数的个数,而直接读取。

板凳

RE:

第一. 当i走到奇数的时候
      h不再赋值,还是上一个偶数的值,
      所以再次print的时候它还是上一个数,
      也就是同一个数总是打印出两遍来了.

第二. 当i走到奇数的时候
      函数Os的值没有赋值,初始值为0
      也就是为什么总是间隔0了.

第三. 不用事先知道DATA中数的个数
      那就只好加大DATA的量了.

3 楼

谢谢MOZ,我再改进一下试试.

4 楼

改好了,请看看,还有此题要求是必须将PRINT语句写在主程中的.
   SUB Os(a,b,flag)
    flag=0
    IF a mod 2=0  THEN
      b=a
    ELSE
      flag=a
    END IF
   END SUB
____________________________
  DECLARE SUB Os(a,b,flag)
   FOR i=1 TO 100
     CALL Os(i,b,flag)
    IF flag=0 THEN PRINT b,
   NEXT i
  END

5 楼

还有怎么给人打分啊????
我想给帮助过我的人打分.

6 楼

这样也不错,其实用fun会更好吧

for i=1 to 100
   if os(i)=0 then print i,
next

function os(a)
os=a mod 2
end function

我来回复

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