0

我正在为我的编程课制作资源,它实际上是非常基本的脚本,我找到了这个网站并浏览了它,里面有很多关于脚本的有用的东西,但是我正在搜索的东西不在列表中,或者我没有使用正确的关键字问题是我的老师让我写一个Vbs来打印乘法表,我做了研究,这就是我现在的位置;

dim sum, arraynum(), arrayline1, count, arraynum2(), arrayline2, arraynum3(), arrayline3, arraynum4(), arrayline4, arraynum5(), arrayline5

count=1
sum=1
arrayline1=1

for count=1 to 5
    redim preserve arraynum(arrayline1)
    redim preserve arraynum2(arrayline2)
    redim preserve arraynum3(arrayline3)
    redim preserve arraynum4(arrayline4)
    redim preserve arraynum5(arrayline5)
    arraynum(arrayline1)=sum
    arraynum2(arrayline2)=sum*2
    arrayline2=arrayline2+1
    arraynum3(arrayline3)=sum*3
    arrayline3=arrayline3+1
    arraynum4(arrayline4)=sum*4
    arrayline4=arrayline3+1
    arraynum5(arrayline5)=sum*5
    arrayline5=arrayline5+1
    sum=sum+1
    arrayline1=arrayline1+1
next

wscript.echo join(arraynum) & vbcrlf & join(arraynum2) & vbcrlf & join(arraynum3) & vbcrlf & join
(arraynum4) & vbcrlf & join(arraynum5)

' Its printing like;
'   1 2 3 4 5
'   2 4 6 8 10
'   3 6 8 12 15
'   4 8 12 16 20
'   5 10 15 20 25

如您所见,它们不在一条直线上,而且我无法通过输入来做到这一点在它们之间设置边界或者是否有可能。

4

1 回答 1

0

诀窍是将 leftpadding 应用于您正在打印的值:计算一个值包含的字符数,从固定数量中减去它们,并为该值添加相同数量的空格。这是一个将替换并左填充vbTab字符的示例。如果您join的数组使用 avbTab而不是默认空间,则可以使用这样的函数。

因为这是一项家庭作业,所以我还添加了一些代码,这些代码可以递归地获取一个数字的倍数,从 0 开始。只是为了引发一些好奇心。我不建议只复制粘贴它,它不符合您的要求:“从 1 开始”。

dim multiple

' Get the numbers 0 to 5
for each multiple in split(getMultiples(1,5), vbTab)
    ' print the multiplication table for each of this numbers
    wscript.echo trim(TabToLpad(getMultiples(multiple, 5), 10))
next

' Does the calculation and returns a Tab delimited string of all multiples
function getMultiples(nr, amount)
    getMultiples = 0
     ' As long as the amount is larger then 0, get the next multiple
    if amount > getMultiples then getMultiples = getMultiples(nr, amount-1) & vbTab & (nr * amount)
End function

' Pads each value in a tab delimited string with the nrPadChars spaces. Returns a string.
function tabToLpad(str, nrPadChars)
    dim part
    for each part in split(str, vbTab)
        tabToLpad = tabToLpad & string(nrPadChars - len(part), " ") & part
    next
End Function
于 2013-03-08T15:40:24.010 回答