回 帖 发 新 帖 刷新版面

主题:各位高手帮忙看看这个函数调用的程序怎么调不出数据来啊!

各位高手帮忙看看这个函数调用的程序怎么调不出数据来啊!
输入2048QQ.DAT文件里全是0!


DECLARE SUB NUM (N, M)
DIM  N0(2048), N1(4096)
       INPUT "NN=", NN
        call NUM(NN/2, N0)
        call NUM(NN, N1)
        OPEN "QQ.DAT" FOR OUTPUT AS #2
        FOR I = 1 TO NN
        PRINT #2, N0(I): NEXT I
      END

   SUB NUM (N, M)
        DIM M(N)
        M(0) = 0
        M(1) = N / 2
        FOR K = 2 TO N - 2 STEP 2
          M(K) = M(K / 2) / 2
      M(K + 1) = M(K) + N / 2: PRINT M(K): NEXT K
END SUB[em6]

回复列表 (共4个回复)

沙发


顶一顶啊!

板凳

传递给子程序的参数是两个变量N0,N1,并不是数组,且没有赋值默认值为0,子程序运行中没有使用这两个变量
数组N0(2048),N1(4096) 没有赋值默认为0,子程序也没有对它的值做改变,所以还是0
这是调用一个子程序不是函数,概念要清楚

先去看看:数组/全局变量/局部变量/子程序(地址传递和值传递)/函数,搞清楚再做题吧

3 楼


那你帮我改下看吧!

4 楼

看看是不是你想要的:

DECLARE SUB num (o1!, o2!, p!, m!)
CLS
DIM n0(2048), n1(4096)
INPUT "NN=", nn
n = nn / 2
n0(0) = 0: n0(1) = n / 2
FOR i = 2 TO n - 2 STEP 2
        CALL num(n0(i), n0(i + 1), n0(i / 2), n)
        PRINT "n0("; i; ")="; n0(i)
NEXT i
n1(0) = 0: n1(1) = nn / 2
FOR i = 2 TO nn - 2 STEP 2
        CALL num(n1(i), n1(i + 1), n1(i / 2), nn)
        PRINT "n1("; i; ")="; n1(i)
NEXT i
OPEN "qq.dat" FOR OUTPUT AS #2
FOR i = 1 TO nn
        PRINT #2, n0(i)
NEXT i
CLOSE #2
END

SUB num (o1, o2, p, m)
o1 = p / 2
o2 = o1 + m / 2
'PRINT o1
END SUB

我来回复

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