码迷,mamicode.com
首页 > Windows程序 > 详细

windows本地评测批处理脚本

时间:2016-03-18 15:58:13      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

在任意文件夹中放入“data.in”和“data.out”文本文件,它们分别表示输入文件和输出文件。

当然还有将被评测的代码文件“代码.cpp”。

将下面的批处理代码复制进txt文件,改后缀名为.bat,放入文件夹。

@echo off
start /wait 获取时间.exe        
set t1=%errorlevel%


代码 < data.in > 代码.out


start /wait 获取时间.exe
set t2=%errorlevel%

set /a t=%t2%-%t1%


fc 代码.out data.out > nul
if not errorlevel 1 (echo Accepted)
if errorlevel 1 (echo Wrong Anwser)

echo 运行时间:%t%ms


pause

 

其中包含获取运行时间的功能,所以要在文件夹中再放入一个c语言编译的“获取时间.exe”,其代码如下:

#include <windows.h>
#include <stdio.h>
int main(int argc, char** argv)
{
    int t = GetTickCount();
    printf("%d\n", t);
    return t;
}

 

文件夹截图如下:

技术分享

 

其中“生成随机数”文件夹先不用管。

现在将“代码.cpp”编译成“代码.exe”,运行上面的.bat批处理程序(我的是“进行!!测试.bat”),就会输出程序运行时间、AC/WA信息。

技术分享

 

 

也可以把结果呈现为对话框形式,批处理代码如下:

@echo off
start /wait 获取时间.exe        
set t1=%errorlevel%


代码 < data.in > 代码.out


start /wait 获取时间.exe
set t2=%errorlevel%

set /a t=%t2%-%t1%


fc 代码.out data.out > nul
if not errorlevel 1 start mshta vbscript:msgbox("运行时间:%t%ms,程序输出与data.out吻合",0,"Accepted")(window.close)&&exit 

start mshta vbscript:msgbox("运行时间:%t%ms,程序输出与data.out不吻合!!!!",0,"Wrong Answer")(window.close)&&exit

 

运行结果如下:

技术分享

 

技术分享

 

 

==========================================================================

这个功能可以用来出题或者进行本地程序对拍,个人感觉非常方便。

data.in是输入文件,它可以是手动编写的数据,但大多数情况下都是随机产生的。

data.out可以用别人正确的代码产生,或者自己编写一个暴力的程序来产生。

产生随机数据的程序如下:

#include <stdio.h>
#include <stdlib.h>
#include<cstring>
#include <time.h> //用到了time函数
long long w,m,sum;
int main()
{
    srand(time(NULL)); //用时间做种,每次产生随机数不一样
    int X=10,T=50000,n=1000;
    printf("%d\n",X);
    printf("%d %d\n",n,T);
    while(T--) {
        int lx=rand()%n+1,ly=rand()%n+1,rx=rand()%n+1,ry=rand()%n+1;
        while(rx<lx||ry<ly) {rx=rand()%n+1;ry=rand()%n+1;}
        printf("C %d %d %d %d\n",lx,ly,rx,ry);
    }
}

上面的代码只是一个示例,不同题目输入数据格式不同,但一般都用到rand()函数。

同样,为了避免在c程序中与文件打交道,可以用批处理命令来将大量数据输出到文本文件中:

CreateData > data.out

其中CreateData是c语言编译的可执行文件。

windows本地评测批处理脚本

标签:

原文地址:http://www.cnblogs.com/lastone/p/5292024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!