主题:求偶数的程序,请看看怎么回事呀??
新人
[专家分:30] 发布于 2005-06-14 22:13:00
第一:
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个回复)
沙发
新人 [专家分:30] 发布于 2005-06-14 22:32:00
第三:
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中数的个数,而直接读取。
板凳
moz [专家分:37620] 发布于 2005-06-15 11:05:00
RE:
第一. 当i走到奇数的时候
h不再赋值,还是上一个偶数的值,
所以再次print的时候它还是上一个数,
也就是同一个数总是打印出两遍来了.
第二. 当i走到奇数的时候
函数Os的值没有赋值,初始值为0
也就是为什么总是间隔0了.
第三. 不用事先知道DATA中数的个数
那就只好加大DATA的量了.
3 楼
新人 [专家分:30] 发布于 2005-06-15 21:27:00
谢谢MOZ,我再改进一下试试.
4 楼
新人 [专家分:30] 发布于 2005-06-16 20:35:00
改好了,请看看,还有此题要求是必须将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 楼
新人 [专家分:30] 发布于 2005-06-16 21:52:00
还有怎么给人打分啊????
我想给帮助过我的人打分.
6 楼
moz [专家分:37620] 发布于 2005-06-16 23:39:00
这样也不错,其实用fun会更好吧
for i=1 to 100
if os(i)=0 then print i,
next
function os(a)
os=a mod 2
end function
我来回复