今天一个同学让我帮忙写一个程序,要求是:

输入一个n,返回从0到n中任意个数的组合,返回取异或结果为0的组合。来看VBS代码

n =
p = ""
for i = to ^n -
s =
for j = to n-
s = s xor (j+) * ((i and ^j) / ^j)
next
if s= then
D2B(i)
end if
next
'Set objFSO = CreateObject("Scripting.FileSystemObject")
'Set objFile = objFSO.OpenTextFile("result.txt",2,true)
'objFile.WriteLine result
Function D2B(Dec)
if Dec = then
D2B =
else
Do While Dec >
D2B = Dec Mod & D2B
Dec = Dec \
Loop
end if
msgbox D2B
End Function

恩,很短小的代码,但是怪就怪在下面那个函数上了,上面代码这样

if s=0 then
  D2B(i)
end if

时,输出结果没有问题,很正常。

但是当把代码改为:

if s=0 then
  result = D2B(i)
end if

结果就不正常了。使用

Wscript.exe /X E:\debug.vbs

调试,结果发现是由于参数i传进函数为byref的,所以在函数内部对i做出了改变,于是就死循环了。但是为什么不对函数结果赋值是就没问题呢?待研究

(vb默认byref,vb.net默认byval)

一个很全的VBS博客了给出了解释。。。

标题: VBS过程和函数参数传递的方式默认是ByVal还是ByRef?
作者: Demon
链接: http://demon.tw/programming/vbs-byval-byref.html

果然有盲点啊

附完整版代码:

n =
result = ""
for i = to ^n -
s =
for j = to n-
s = s xor (j+) * ((i and ^j) / ^j)
next
if s= then
temp = i
result = result & D2B(temp) & chr() & chr()
end if
next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("result.txt",,true)
objFile.WriteLine result
Function D2B(Dec)
if Dec = then
D2B = ""
else
Do While Dec >
D2B = Dec Mod & D2B
Dec = Dec \
Loop
end if
for k = to n-len(D2B)
D2B = "" & D2B
next
End Function

关于VBS的一个怪现象的更多相关文章

  1. Javascript的一个怪现象

    javascript有一个怪现象,就是减法也会导致小数位数问题,是一个麻烦的问题,比如. <html><script> var a=10,b=20.1; alert( a - ...

  2. pspad的一个怪现象:在一些空行的位置出现个别不该出现的字符

    在用pspad编辑一个外来文件时,发现有许多空行的结尾会出现一些单个字符,字符内容与翻页前那一页相应位置的字符相同. 好奇怪.上网找不到原因.pspad太好用了,不想因此放弃. 仔细观察,这些空行往往 ...

  3. linux nfs怪现象——软连接、文件属主的变更

    怪现象:proxmox:/etc-asterisk# ls sip.confsip.confproxmox:/etc-asterisk# more sip.confsip.conf: No such ...

  4. 「SAP 技术」SAP BP显示供应商账户组时候的怪现象

    SAP BP显示供应商账户组时候的怪现象 BP事务代码显示某个vendor的时候,笔者发现对于账户组字段选项列表里,不显示当前vendor的account group. 如下图,该供应商的accoun ...

  5. for循环产生的Cortex-M3汇编代码的一个奇怪现象

    最近比较一下KEIL和IAR两个编译器产生的代码,基于Cortex-M3处理器的,然后发现了一几个奇怪的地方. 很简单的一个C的for循环 void fun_for_add_65535(void) { ...

  6. 如何用VBS编写一个简单的恶搞脚本

    windows系统的电脑, 首先右击桌面,选择新建-文本文档,在桌面上新建一个文本文档:     随后打开计算机或者是我的电脑,点击其中的组织(xp系统多为工具),选择下面的文件夹和搜索选项     ...

  7. PHP 浮点型转整型的一个奇怪现象

    起因 最近通过一个学长的题了解php弱类型的时候,发现了一个奇怪的现象. 正文 主要问题在这样一段代码: $c=(int)((0.1+$b)*10); 当$b=0.6,0.8以及其他值的时候都正常 将 ...

  8. 一个神秘现象引发对beego框架的思考

    小强最近在项目中遇到了一个很奇怪的问题:在整改日志规范时,为了避免影响现有的代码结构以及改动尽可能小的前提下,在调用记日志的SDK处将某一个字段值首字母改为大写,代码示例如下: fmt.Println ...

  9. PHP函数 rtrim() 的一个怪异现象

    今天用rtrim()函数时遇到了一个奇怪的问题: echo rtrim('<p></div>', '</div>'); // 输出为 <p echo ltri ...

随机推荐

  1. 实现对sqlite数据库增删改查

    package com.example.db.dao;import java.util.ArrayList;import java.util.List;import android.content.C ...

  2. php跨域问题

    http://www.cnblogs.com/xiezn/p/5651093.html

  3. MongoDB-WriteConcern

    WriteConcern safe=false 非安全模式 很快

  4. windows下安装ImageMagick

    最近在开发过程中用到了ImageMagick,结合网上的教程做一下记录 安装的具体步骤可以参考http://blog.csdn.net/belen_xue/article/details/728962 ...

  5. java代码做repeat次运算,从键盘输入几个数,比最值

    总结:今天这个题目有点灵活,因为它不但要求输出结果,还要进行几次相同的输入,不退出循环 import java.util.Scanner; //从键盘一次输入更多的数,然后把每一次的数进行---可比较 ...

  6. web.config 权限设置

    <system.web> <authorization> <!--未登陆用户不可以访问--> <deny users="?" /> ...

  7. git学习2 - 安装

    msysgit是Windows版的Git,从https://git-for-windows.github.io下载(网速慢的同学请移步国内镜像),然后按默认选项安装即可. 安装完成后,在开始菜单里找到 ...

  8. IDA Pro 权威指南学习笔记(七) - 其他 IDA 显示窗口

    默认情况下 IDA 不会打开这些窗口,可通过 View -> Open Subviews 命令打开 Strings 窗口(Strings) Strings 窗口中显示的是从二进制文件中提取出的一 ...

  9. 匿名类型与Select方法实现自定义对象插入局部表结构中

    在提取局部表结构数据时,通过Select选取需要的字段,如下句,此时其实产生了一个不用于_menuMan的原新数据类型new { c.SYS_COMMANDS_ID,c.TXT_COMMANDTITL ...

  10. maven项目如何启动运行---发布到tomcat中

    前面两篇文章: 新建maven框架的web项目 以及 将原有项目改成maven框架 之后,我们已经有了maven的项目 那么 maven项目到底怎么启动呢 如果我们直接在myeclipse中按以前的启 ...