下面是Windows下的批处理程序:
@echo off :again r > input a < input > output.a ;生成随机数 b < input > output.b fc output.a output.b > nul ;比较文件 if not errorlevel 1 goto again ;相同时继续循环</span>第一行表明接下来的各个命令本身并不会回显,试着把这一行去掉。第二行是一个标号,与后面的goto构成循环。r是数据生成器,把生成的随机数据写入到文件input中,然后执行a和b,得到相应的输出,然后用命令fc比较它们。最后一行是整个批处理的关键,只有当比较稳健相同是才goto,否则立刻终止程序。
此外,"if not errorlevel 1"是用来测试上一个程序的返回码的。“if errorlevel num”的意思是“如果返回码大于或者等于num”,因此“fi not errorlevel 1”的意思是,“如果返回码小于1”。事实上,fc程序当且仅当文件相同是返回0。如果你你不确定程序的返回码是多少,可以才程序执行完毕后echo %errorlevel%命令来输出他的返回码。返回码为0往往表示正常结束。
过程详解:
在桌面上新建四个个文本文档。
第一个文本文档输入:
<span style="font-family:Comic Sans MS;">@echo off :again r > input a < input > output.a b < input > output.b fc output.a output.b > nul if not errorlevel 1 goto again </span>保存为001.bat。
第二个文本文档输入:
<span style="font-family:Comic Sans MS;">#include <stdio.h> int main() { int x,y; scanf("%d%d",&x,&y); printf("%d\n",x*y); return 0; }</span>保存为a.cpp。
第三个文本文档输入:
<span style="font-family:Comic Sans MS;">#include <stdio.h> int main() { int x,y; scanf("%d%d",&x,&y); printf("%d\n",x+y); return 0; }</span>保存为b.cpp。
第四个文本文档输入:
<span style="font-family:Comic Sans MS;">#include <stdio.h> #include <time.h> #include <stdlib.h> int n=10,m=100; double random() { return (double)rand()/RAND_MAX; } int random(int m) { return (int)(random()*(m-1)+0.5); } int main() { srand(time(NULL)); int cas=100; while (cas--) { int x=random(n),y=random(m); printf("%d %d\n",x,y); } return 0; } </span>保存为r.cpp。
Ctrl + R ,输入cmd,回车。如果电脑上已经安装gcc或者g++。
g++ a.cpp -o a
g++ b.cpp -o b
g++ r.cpp -o r
回到桌面上,双击001.bat。
完成。