Board logo

标题: [已解决]用VBS计算用户输入的值乘以几个数 [打印本页]

作者: 随风    时间: 2009-5-9 10:28     标题: [已解决]用VBS计算用户输入的值乘以几个数

要求,运行代码后,提示输入一个数 n
则计算 该数分别乘以 下列数的积,然后一次性显示出来
1.382
1.5
1.618
2
2.382
2.5
2.618
显示:
n*1.382=
n*1.5=
。。。。
。。。。
n*2.618=

[ 本帖最后由 随风 于 2009-5-9 19:31 编辑 ]
作者: defanive    时间: 2009-5-9 10:54

  1. num=array(1.382,1.5,1.618,2,2.382,2.5,2.618)
  2. n=inputbox("Input a num")
  3. for i=0 to ubound(num)
  4. str=str&n&"*"&num(i)&"="&n*num(i)&chr(10)&chr(13)
  5. next
  6. msgbox str
复制代码

作者: 随风    时间: 2009-5-9 11:31     标题: 回复 2楼 的帖子

谢谢!
对vbs一窍不通,请问能把结果对齐吗?
再次麻烦了~~
向这样
3*8         = 24
10*10     = 100
100*100 = 10000

[ 本帖最后由 随风 于 2009-5-9 11:34 编辑 ]
作者: yslyxqysl    时间: 2009-5-9 12:00

len
space
作者: defanive    时间: 2009-5-9 12:05

  1. num=array(1.382,1.5,1.618,2,2.382,2.5,2.618)
  2. n=inputbox("Input a num")
  3. for i=0 to ubound(num)
  4. str=str&n&"*"&num(i)&chr(9)&"="&n*num(i)&chr(10)&chr(13)
  5. next
  6. msgbox str
复制代码

作者: defanive    时间: 2009-5-9 12:05     标题: 回复 4楼 的帖子

直接用Tab就行了吧。。。。
用Spc太麻烦了。。。
作者: 随风    时间: 2009-5-9 12:27

我真是笨极了,我想把乘号和等号左右都加个空格,怎么它会格一行对齐一行呢?
  1. num=array(1.382,1.5,1.618,2,2.382,2.5,2.618)
  2. n=inputbox("Input a num")
  3. for i=0 to ubound(num)
  4. str=str&n&" * "&num(i)&chr(9)&" = "&n*num(i)&chr(10)&chr(13)
  5. next
  6. msgbox str
复制代码

作者: Batcher    时间: 2009-5-9 13:11

  1. num=array(1.382,1.5,1.618,2,2.382,2.5,2.618)
  2. n=inputbox("Input a num")
  3. for i=0 to ubound(num)
  4.   if TypeName(num(i)) = "Integer" then
  5.     str=str&n&" * "&num(i)&chr(9)&chr(9)&" = "&n*num(i)&chr(10)&chr(13)
  6.   else
  7.     str=str&n&" * "&num(i)&chr(9)&" = "&n*num(i)&chr(10)&chr(13)
  8.   end if
  9. next
  10. WScript.Echo str
复制代码

作者: 随风    时间: 2009-5-9 13:18     标题: 回复 8楼 的帖子

奇怪我的怎么不行?
作者: 随风    时间: 2009-5-9 16:46

这段vbs的结果中难道有不可见字符?
我不用call 给变量赋值的话,第一行就怎么也对不齐。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims==" %%a in ('cscript /nologo tem.vbs') do (
  3.    call set "str=%%a                              "                              
  4.    if not "%%b"=="" echo. !str:~0,15! = %%b
  5. )
  6. pause
  7. exit
复制代码

tem.vbs
  1. num=array(1.382,1.5,1.618,2,2.382,2.5,2.618)
  2. n=inputbox("Input a num")
  3. for i=0 to ubound(num)
  4. str=str&n&"*"&num(i)& "= "&n*num(i)&chr(10)&chr(13)
  5. next
  6. WScript.Echo str
复制代码

[ 本帖最后由 随风 于 2009-5-9 16:47 编辑 ]
作者: 随风    时间: 2009-5-9 16:48

真是奇怪了,call set "str=%%a                              " 始终无法在一行中显示,是论坛的原因吗?
彻底晕了。。。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('cscript /nologo tem.vbs') do (
  3.   echo [前] %%a [后]
  4. )
  5. pause
复制代码

只显示一个 “前”

[ 本帖最后由 随风 于 2009-5-9 16:55 编辑 ]
作者: yslyxqysl    时间: 2009-5-9 17:05

Integer不是整数就有问题
作者: 随风    时间: 2009-5-9 19:30

问题是解决了,采用的2楼的方案,谢谢大家。。。
作者: batman    时间: 2009-5-9 21:46

哈哈,随风兄也对vbs起了兴趣了。
的确,用vbs+批处理比单用批处理强了N倍。
作者: cmbatd    时间: 2009-5-14 18:21     标题: 回复 9楼 的帖子

还是不明白~~1.5和2.5就那么特殊,后面一个也没有?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2