欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

testlib.h从入门到入坟

程序员文章站 2022-07-02 15:14:13
学了这么久OI连个spj都不会写真是惭愧啊。。。 趁着没退役赶紧学一波吧 配置 github下载地址 我是直接暴力复制粘贴的。。 然后扔到MingW的目录里 直接引用就好啦 基本语法 引用testlib.h后,我们可以从三个地方读入数据 inf:输入文件 ouf:选手输出 ans:标准输出 当然,肯 ......

学了这么久oi连个spj都不会写真是惭愧啊。。。

趁着没退役赶紧学一波吧

配置

github下载地址

我是直接暴力复制粘贴的。。

然后扔到mingw的目录里

testlib.h从入门到入坟

直接引用就好啦

testlib.h从入门到入坟

 

基本语法

引用testlib.h后,我们可以从三个地方读入数据

inf:输入文件

ouf:选手输出

ans:标准输出

当然,肯定不能直接用scanf读入,testlib里内置了很多读入函数

基本上就够用了。。。

testlib.h从入门到入坟

一个简单的例子

#include "testlib.h"

// main 需要接收命令行参数
int main(int argc, char *argv[])
{
    // 初始化 checker 环境 —— 解析命令行参数、打开文件……
    registertestlibcmd(argc, argv);

    // 三个全局变量 inf, ouf, ans 依次为输入、选手输出和参考输出
    int pans = ouf.readint(-2000, 2000);
    int jans = ans.readint();

    if (pans == jans)
        quitf(_ok, "the sum is correct.");
    else
        quitf(_wa, "the sum is wrong: expected = %d, found = %d", jans, pans);

    return 0;
}

 

运行

运行的时候需要切换到checker所在的目录,输入以下命令

windows

checker <input-file> <output-file> <answer-file>

linux

./checker <input-file> <output-file> <answer-file>

根据输出结果可以判断程序的对错

 

注意事项

写这篇文章主要是为了记一下容易翻车的地方。。

  • 读入的时候必须把三个文件里的内容都读完,不然会出现

 testlib.h从入门到入坟

如果全都读完后仍然显示这个。。。。

zzq给了个解决方案orz

testlib.h从入门到入坟

 

 

  •  checker内尽量不要出现中文字符,不然上传到某些oj的时候可能会出bug

testlib.h从入门到入坟

 

 自己写了个模板

testlib.h从入门到入坟
#include "testlib.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005 + 10; 
void yes() {
    quitf(_ok, "the ans is correct.");
}
void no() {
    quitf(_wa, "the ans is not correct.");
    exit(0);
}
void readinf() {

}
void readouf() {

}
void readans() {

}
int main(int argc, char *argv[]) {
    registertestlibcmd(argc, argv);
    
    readinf();
    readouf();
    readans();
    

    return 0;
}
板子