返回列表 发帖

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

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

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

普通青年:
For i = 1 To 100
    s = s + i
Next
MsgBox sCOPY
文艺青年:
Dim a(101)
Execute(Join(a,"s=s+i:i=i+1:"))
MsgBox sCOPY
2B青年:
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)COPY
你属于哪一种?

貌似是普通 2b 青年...
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""")COPY
纯批版:
普通青年
@echo off
echo -----------------------------------
echo Fuck you and Fuck you and Fuck you.
echo -----------------------------------
pauseCOPY
文艺青年
@more +1 %0&pause&exit
-------------------------
Fuck you again and again.
-------------------------COPY
2b 青年
@echo off
@echo --------------------
@echo Fuck you one by one.
@echo --------------------
@pause&exitCOPY
2

评分人数

TOP

文艺青年果然看不懂。

TOP

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

数学青年
result=(100+1)*100/2
msgbox resultCOPY
神奇青年
Dim result
GetSum(100)
MsgBox result
Sub GetSum(max)
If Not IsNumeric(max) Then max=100
result=result+max
max=max-1
If max<1 Then Exit Sub
GetSum(max)
End SubCOPY

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
Function add(sum, a)
If a = 0 Then
add = sum
Else
add = add(sum + a, a - 1)
End If
End Function
MsgBox add(0, 100)COPY
End If
End Function

MsgBox add(0, 100)[/code]

TOP

返回列表