C# · 12月 20, 2021

对付OJ的懒人C++写法

先贴写法

#include

using namespace std;

int body(void)

{

//真代码

return 0;

}

int main(void)

{

#pragma warning(disable:4996)

FILE* fp = freopen(“1.txt”,”r”,stdin); //重定向stdin从文件读取输入

body();

fflush(fp);//将输出缓冲区清空

freopen(“CON”,stdin); //重定向输出到控制台

system(“pause”);

return 0;

}

文件读取输入

在线评价代码(online judge,OJ)一般会给出测试用数据和结果,可以用来输入到本地程序里。问题是,输入太麻烦了。上述的主程序第一行内重定向文件到输入,所以只要把样例复制到代码目录下的“1.txt”就可以了,每次运行自动读取输入。pragma是对付visual studio用的,不然警告4996会报错。之后的重定向回键盘是为了下面的pause可以完成“按任意键退出”。

命令行窗口闪烁?

作业调试要看窗口的输出是不是和答案一样。如果命令行窗口闪烁,就要写一行getchar()或者system(“pause”)来完成“按任意键退出”。但是有些OJ运行这些代码,会出编译错误。所以一起写在这里。

怎么交作业呢?

我的OJ只给一个文本框叫我进去,我的方法就是把body()及以上的所有东西拷贝到OJ输入去,然后把body改名成main。如果要提交文件就重新建一个cpp文件,也是拷贝改名。这里其实还是有点麻烦的,能不能把这事也自动化了?

这是我的csdn第一篇文章。这些写作用的宏可真费劲。