回 帖 发 新 帖 刷新版面

主题:帮我看看这个程序出了什么问题

DECLARE SUB can (sum, k, a$())
CLS
n = 8
su = 0
DIM b$(7)
FOR i = 0 TO 6
INPUT "b$(i)"; b$(i)
CALL can(su, n, b$())
NEXT i
END

SUB can (sum, k, a$())
SELECT CASE a$(i)
CASE "a", "j"
sum1 = k * 1
k = k - 1
sum = sum1 + sum
PRINT "sum1="; sum1
PRINT "k="; k
PRINT "sum="; sum
CASE "b", "k"
sum1 = k * 2
k = k - 1
sum = sum + sum1
PRINT "sum1="; sum1
PRINT "k="; k
PRINT "sum="; sum
CASE "c", "l", "t"
sum1 = k * 3
k = k - 1
sum = sum1 + sum
PRINT "k="; k
PRINT "sum="; sum

CASE "d", "m", "u"
sum1 = k * 4
k = k - 1
sum = sum1 + sum
PRINT "k="; k
PRINT "sum="; sum
CASE "e", "n", "v"
sum1 = k * 5
k = k - 1
sum = sum + sum1
PRINT "k="; k
PRINT "sum="; sum
CASE "f", "w"
sum1 = k * 6
k = k - 1
sum = sum + sum1
PRINT "k="; k
PRINT "sum="; sum
CASE "g", "p", "x"
sum1 = k * 7
k = k - 1
sum = sum + sum1
PRINT "k="; k
PRINT "sum="; sum
CASE "h", "y"
sum1 = k * 8
k = k - 1
sum = sum + sum1
PRINT "k="; k
PRINT "sum="; sum
CASE "r", "z"
sum1 = k * 9
k = k - 1
sum = sum + sum1
PRINT "k="; k
PRINT "sum="; sum
CASE "0" TO "9"
sum1 = k * VAL(a$(i))
k = k - 1
sum = sum + sum1
PRINT "k="; k
PRINT "sum="; sum
END SELECT
END SUB
当输入第一个数字或者字母的时候还是正确的,可是后面就不对了,不知道是怎么回事?大家帮我看看啊!

回复列表 (共6个回复)

沙发

当你输入第一个数字或字母时,
第12行的 i 值为 0 ,
当然是正确的了。

当你输入以后任何一个数字或字母时,
第12行的 i 值依然为 0 ,
结果肯定是跟第一次的结果相同的了。

你没分清楚变量的作用域(范围)吗?

板凳

是啊,我还是很糊涂的,我不是在主程序里中NEXT I这一步吗?我原来学的编程,很多年没用了,忘完了,哎。。。。。

3 楼

请教该怎么写呢?是不是应当在子程序里也要定义数组呢?

4 楼

如果你只是需要修改的话,
有两种方法
第一种      在第二行加一句:dim shared i as integer
第二种      在子程序的参数列表里添加一个参数 i

5 楼


你太厉害了,我佩服极了,只一句就把我的问题解决了
我真该谢谢你

6 楼

感谢他就给他加分吧,这也是表示感谢的一种方法

我来回复

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