[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] VBS普通青年 vs 文艺青年 vs 2B青年

纯属娱乐,原文地址http://demon.tw/programming/vbs-normal-artistic-2b-youth.html

问题:请用VBS计算计算1到100的和。

普通青年:
  1. For i = 1 To 100
  2.     s = s + i
  3. Next
  4. MsgBox s
复制代码
文艺青年:
  1. Dim a(101)
  2. Execute(Join(a,"s=s+i:i=i+1:"))
  3. MsgBox s
复制代码
2B青年:
  1. MsgBox (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100)
复制代码
你属于哪一种?

貌似是普通 2b 青年...
  1. CreateObject("WScript.Shell").RUN("cmd /v /q /c ""(set str=0&for /l %a in (1 1 100) do set str=!str!+%a)&set /a ""n=!str!""&pause>nul""")
复制代码
纯批版:
普通青年
  1. @echo off
  2. echo -----------------------------------
  3. echo Fuck you and Fuck you and Fuck you.
  4. echo -----------------------------------
  5. pause
复制代码
文艺青年
  1. @more +1 %0&pause&exit
  2. -------------------------
  3. Fuck you again and again.
  4. -------------------------
复制代码
2b 青年
  1. @echo off
  2. @echo --------------------
  3. @echo Fuck you one by one.
  4. @echo --------------------
  5. @pause&exit
复制代码
2

评分人数

TOP

文艺青年果然看不懂。

TOP

本帖最后由 applba 于 2012-1-18 22:20 编辑

数学青年
  1. result=(100+1)*100/2
  2. msgbox result
复制代码
神奇青年
  1. Dim result
  2. GetSum(100)
  3. MsgBox result
  4. Sub GetSum(max)
  5. If Not IsNumeric(max) Then max=100
  6. result=result+max
  7. max=max-1
  8. If max<1 Then Exit Sub
  9. GetSum(max)
  10. End Sub
复制代码

TOP

回复 3# Hello123World

分析一下该段代码:
Dim a(101)
Execute(Join(a,"s=s+i:i=i+1:"))
MsgBox s


他定义一个了一个一维数组,所有元素的值都是Empty。
Join(a,"s=s+i:i=i+1:")连接后带得到的字符串就是 "s=s+i:i=i+1:s=s+i:i=i+1:s=s+i:i=i+1:……"
然后再excute一下上面的字符串就ok了~

TOP

回复 2# CrLf


    有没有办法把4楼的递归sub改成递归Function。

TOP

回复 6# applba
  1. Function add(sum, a)
  2. If a = 0 Then
  3. add = sum
  4. Else
  5. add = add(sum + a, a - 1)
  6. End If
  7. End Function
  8. MsgBox add(0, 100)
复制代码
End If
End Function

MsgBox add(0, 100)[/code]

TOP

返回列表