以下是引用Trynew在2005-6-15 13:37:00的发言:
如果只要求一组解,下面应该是最短的了:去掉Tmp中间变量,就剩一个循环和一条语句。
Public Function Str(Optional i As Integer, Optional Tmp As String) As String
For i = 1 To 2 ^ 6 - 1
Tmp = (i And 32) / 32 * 3.1 & "+" & (i And 16) / 16 * 1.7 & "+" & (i And 8) / 8 * 2
Tmp = Tmp & "+" & (i And 4) / 4 * 5.3 & "+" & (i And 2) / 2 * 0.9 & "+" & (i And 1) * 7.2
Str = IIf((Abs(Eval(Tmp) - 10) < Abs(Eval(IIf(Str = "", "0", Str)) - 10)), Tmp, Str)
Next
End Function
下面是两个自定义获取和设置一个整数某一位的位操作函数,在使用一个整数保存多个开关量的时候可以用到,如用一个字段保存多个选项。另外使用此函数的话,上面的程序语句可以短一些:
Public Function GetByte(Num As Long, i As Integer) As Long
GetByte = (Num And 2 ^ i) / 2 ^ i
End Function
Public Function SetByte(Num As Long, i As Integer, val As Integer) As Long
SetByte = IIf(val = 1, Num Or 2 ^ i, Num - (Num And 2 ^ i))
End Function
[建议把此帖转到技术竞赛栏目]
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) | Powered by Discuz! X3.3 |