程序对拍

Posted adelalove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序对拍相关的知识,希望对你有一定的参考价值。

对拍是什么呢?

对拍就是你给两个程序,和一个随机数据生成器,然后系统去用这个随机数据生成器的输出

作为你这两个程序的输入,

然后比较你这两个程序的输出,可以找到一组使这两个程序输出不一样的数据(如果存在的话)

 

 

怎么对拍呢?

首先,新建一个文件夹,

然后,在里面放入std.cpp  和 my.cpp

生成std.exe  和 my.exe

然后再写一个随机数据生成器 例:数据生成.cpp ===>数据生成.exe

然后把这三个exe放入到同一文件夹下。

运行对拍程序

 

@echo off  
:loop  
    数据生成.exe > in.txt
    my.exe < in.txt > myout.txt
    std.exe < in.txt > stdout.txt
    fc myout.txt stdout.txt
if not errorlevel 1 goto loop  
pause
goto loop

 

 

解释:

 

首先@echo off 是关掉输入显示,不然你的所有命令都会显示出来的,防止刷屏。 
:loop是定位标记点,和c语言里的goto很像。 
中间是主体程序。 
if not errorlevel 1 goto loop ,errorlevel 是上一个命令的返回值,fc在文件不同时返回1,相同时返回0,这一行的意思就是,

如果fc返回的不是1,就跳到:loop,使劲循环。 
pause,暂停,一旦fc返回1,就会执行到这一行,停住程序,给你时间看数据。 
goto loop,看完数据,按下任意键结束暂停,继续循环

即如果出现不同会显示错误。否则不停止。

 

以上是关于程序对拍的主要内容,如果未能解决你的问题,请参考以下文章

对拍(windows环境)

简易对拍器

Windows系统对拍程序

对拍程序

对拍——我认为的最简写法

使用bat打的对拍程序