笔记
2026-08-11 09:18:53
发布于:浙江
笔记(存自用)
data.cpp 生成随机数据
baoli.cpp 正确程序
my.cpp 自己的程序
check.cpp 自动运行、比较答案
记忆口诀:
出题 → 标答 → 自己 → 比较
1. 数据生成器:data.cpp
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
int main() {
freopen("data.in", "w", stdout);
// 使用毫秒时间作为随机种子
srand(time(0));
int a = rand() % 100 + 1;[1~100]
int b = rand() % 100 + 1;
cout << a << ' ' << b;
return 0;
}
每次运行都会生成两个 (1\sim100) 的随机数,写入:
data.in
2. 正确程序:baoli.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
freopen("data.in", "r", stdin);
freopen("baoli.out", "w", stdout);
long long a, b;
cin >> a >> b;
cout << a + b;
return 0;
}
真实题目中,这里写简单、可靠的暴力算法。
计算结果保存到:
bf.out
3. 待检查程序:my.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
freopen("data.in", "r", stdin);
freopen("my.out", "w", stdout);
int a, b;
cin >> a >> b;
cout << a + b;
return 0;
}
真实使用时,把这里换成学生准备提交的程序。
为了演示错误,可以故意改成:
cout << a - b;
计算结果保存到:
my.out
4. 自动对拍程序:check.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int cnt = 0;
while (true) {
system("data.exe"); // 生成随机数据
system("baoli.exe"); // 运行正确程序
system("my.exe"); // 运行自己的程序
// 比较两个输出文件
if (system("fc baoli.out my.out > nul")) {
cout << "WA!第 " << cnt + 1;
cout << " 组数据出错!\n";
break;
}
cnt++;
cout << "第 " << cnt << " 组:AC\n";
}
system("pause");
return 0;
}
5. 编译
分别编译四个程序:
data.cpp → data.exe
baoli.cpp → baoli.exe
my.cpp → my.exe
check.cpp → check.exe
确保它们都在同一个文件夹:
data.cpp·
data.exe
bf.cpp
bf.exe
my.cpp
my.exe
check.cpp
check.exe
然后只运行:
check.exe
6. 运行结果
答案相同时,会不断显示:
第 1 组:AC
第 2 组:AC
第 3 组:AC
……
如果答案不同,会停止并显示:
WA!第 4 组数据出错!
此时查看:
data.in 出错的输入
bf.out 正确答案
my.out 自己的答案
不要立即重新运行 check.exe,否则错误数据会被覆盖。
这里空空如也

















有帮助,赞一个