IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++版题目随机测试数据编写器 -> 正文阅读

[C++知识库]C++版题目随机测试数据编写器

介绍

有许多OJ平台及各大比赛的出题人需要出很多的测试数据,但却自己编不出来?

下面这些建议你看看

(虽然网上有很多其他的bat版随机测试数据编写器,但是我还是喜欢用我这种C++版的)

主程序

.in文件生成(data_make_in.cpp

#include<math.h>
#include<string>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
#include<time.h>
#define ll long long
using namespace std;
int R(int x){return (rand()*rand())%x+1;}  //随机数的生成
string s="name";  //在此处改为题目名(仅支持英文)
void s70(){  //对于100%的数据进行以下输出
	FILE* lin=fopen(s.c_str(),"w");
	
    
	fclose(lin);
	return ;
}
void s30(){  //对于70%的数据进行以下输出
	FILE* lin=fopen(s.c_str(),"w");
	
    
	fclose(lin);
	return ;
}
void s00(){  //对于30%的数据进行以下输出
	FILE* lin=fopen(s.c_str(),"w");
	
    
	fclose(lin);
	return ;
}
int main(){
	int tt;
	int typ=tt=20;  //在此处修改测试数据组数,默认为20
	int len=s.size();
	s+=char(tt/100+'0');
	s+=char((tt/10)%10+'0');
	s+=char(tt%10+'0');
	s+=".in";
	srand((unsigned)time(NULL));
	while(typ--){
		if(typ>=tt*70/100)  //表示对于100%的数据进行以下生成
			s70();
		else if(typ>=tt*30/100)  //表示对于70%的数据进行以下生成
			s30();
		else  //表示对于30%的数据进行以下生成
			s00();
        //如需增加其他节点可按照这些样例来加入
		s[len]='0';
		s[len+1]='0'+typ/10;
		s[len+2]='0'+typ%10;
	}
	return 0;
}

在上方代码的标记位置修改测试数据组数以及题目名(仅支持英文)。

在上方代码留空的地方进行生成操作。注意 :输出需用 fprintf(lin,项目1,项目2) ,详情可自行搜索

.out文件生成(data_make_out.cpp

#include<cstdlib>
#include<iostream>
#include<string>
#include<cstring>
#include<ctime>
#include<cstdio>
#include<windows.h>
using namespace std;
int main(){
	string name,in=".in",out=".out",exe=".exe",exefile=".exe",infile=".in",outfile=".out";
	int n;
	printf("请输入题目名:");
	cin>>name;
	printf("请输入数据in个数:");
	scanf("%d",&n);
	exefile.insert(0,name);
	infile.insert(0,name);
	outfile.insert(0,name);
	string cmd2="del ",cmd4="del ";
	for(int i=n;i>=1;i--){
		string cmd1="copy ",cmd3="copy ";
		cmd1+=name;
		cmd1+=char(i/100+'0');
		cmd1+=char((i/10)%10+'0');
		cmd1+=char(i%10+'0');
		cmd1+=in;
		cmd1+=" ";
		cmd1+=infile;
		system(cmd1.c_str());
		system(exefile.c_str());
		cmd3+=outfile;
		cmd3+=" ";
		cmd3+=name;
		cmd3+=char(i/100+'0');
		cmd3+=char((i/10)%10+'0');
		cmd3+=char(i%10+'0');
		cmd3+=out;
		system(cmd3.c_str());
		printf("NO.%d\n",i); 
	}
	cmd2+=infile;
	cmd4+=outfile;
	system(cmd2.c_str());
	system(cmd4.c_str());
	return 0;
}

上面的代码你不需要进行任何的改动,直接复制然后编译运行即可,照着运行要求进行就行

注意 :所有前面生成的所有.in文件、正解的.exe文件和上面这个.cpp编译出来的.exe文件都要放在同一目录下!!

注意 :正解需要用加上freopen,输入文件名为 题目名+.in ,输出文件名为 题目名+.out ,更多有关内容可自行搜索

结果

运行完以上两个程序后在当前文件夹会出现测试数据,可压缩成 .zip 压缩文件进行其他操作

结尾

如果还有其他疑问可以提在下面的评论区,我会一一解答。

如果你觉得这篇文章写的很好,记得 关注,点赞,评论,转发

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 10:54:41  更:2022-09-13 10:57:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 13:09:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码