下面是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。
完成。