由于本人太弱,,,不会lemon,,,也不会在ubuntu下安装lemon,所以我选择手写测试程序emmmm

首先要写这个东西我们要先知道对拍怎么写。

     for(int i = ; i <= ; i++)
{
system("./make >in.in");
system("./work >out.out");
system("./work1 >out1.out");
if(system("diff -bB out.out out1.out"))
{
printf("error in %d\n", i);
break;
}
else
{
printf("passed... %d\n", i);
system("sleep 1");
}
}

那么我们的测试程序就是基于这个对拍程序改的。

因为system里面的都是字符串,因此我们要用到字符串,但怎么用呢?

我们可以用一些小字符串来拼凑出一个大字符串。比如这样:

         s = "./work < " + tmp + ".in";

其中s和tmp都是string。

tmp即代表当前测试的数据组数。

因为通常我们的数据包是这样的:1.in 1.out 2.in 2.out……

因为后缀相同,所以我们只需要用tmp存下前面的数字就好了。那么我们要怎么获取呢?

 void get(int x)
{
tot = ;
while(x) m[++tot] = x % , x /= ;
tmp = "";
for(R i = tot; i; i --)
{
tmp += m[i] + '';
}
}

因为tmp也是字符串,所以我们可以手写一个get函数,来实现把数x变为字符串后放入tmp

值得注意的是,字符串的初始化不能直接等于0,(虽然我看网上好多blog都是直接=0,但是我这么用会报错,,,我也不知到为什么);

所以我们令tmp = "";

然后再把数放进去,放进去的方式也是和前面一样的加入一个个的小字符串。

于是我们现在有了应该放在system("")里的字符串,那么我们要如何放进去呢?

     for(R i = ; i <= ; i++)
{
get(i);
s = "./work < " + tmp + ".in";
system(s.c_str());
s = "diff -bB a.out " + tmp + ".out";
if(system(s.c_str()))
{
printf("get %d points\n", (i - ) * );
exit();
}
}

我们可以直接使用.c_str()来获取当前字符串的首字符地址,然后放入原本需要字符串的地方,注意不要 " "  哦。

放上完整代码:

 #include<bits/stdc++.h>
using namespace std;
#define R register int
string s,tmp;
int m[], tot; void get(int x)
{
tot = ;
while(x) m[++tot] = x % , x /= ;
tmp = "";
for(R i = tot; i; i --)
{
tmp += m[i] + '';
}
} int main()
{
for(R i = ; i <= ; i++)
{
get(i);
s = "./work < " + tmp + ".in";
system(s.c_str());
s = "diff -bB a.out " + tmp + ".out";
if(system(s.c_str()))
{
printf("get %d points\n", (i - ) * );
exit();
}
}
printf("get 100 points!!!

Linux相关——手写测试程序的更多相关文章

  1. 好记性不如烂笔头--linux学习笔记9练手写个shell脚本

    #!/bin/bash #auto make install httpd #by authors baker95935 #httpd define path variable H_FILES=http ...

  2. MySQL手写代码相关变量

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11777682.html 手写一些SQL代码时候需要用到的关键字. DELIMITER, BEG ...

  3. OpenCV+TensorFlow实现自定义手写图像识别

    完整版请点击链接:https://mp.weixin.qq.com/s/5gHXGmLbtO7m3dOFrDUiHQ    或微信关注“大数据技术宅” 继用TensorFlow教你做手写字识别(准确率 ...

  4. Atitit s2018.2 s2 doc list on home ntpc.docx  \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat

    Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系  法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别   ...

  5. [Python]基于CNN的MNIST手写数字识别

    目录 一.背景介绍 1.1 卷积神经网络 1.2 深度学习框架 1.3 MNIST 数据集 二.方法和原理 2.1 部署网络模型 (1)权重初始化 (2)卷积和池化 (3)搭建卷积层1 (4)搭建卷积 ...

  6. C基础 带你手写 redis adlist 双向链表

    引言 - 导航栏目 有些朋友可能对 redis 充满着数不尽的求知欲, 也许是 redis 属于工作, 交流(面试)的大头戏, 不得不 ... 而自己当下对于 redis 只是停留在会用层面, 细节层 ...

  7. 【项目】手写FTP服务器-C++实现FTP服务器

    X_FTP_server 手写FTP服务器-C++实现FTP服务器 项目Gitee链接:https://gitee.com/hsby/ftp_Server 简介 一个基于libevent的高并发FTP ...

  8. 使用PyTorch构建神经网络模型进行手写识别

    使用PyTorch构建神经网络模型进行手写识别 PyTorch是一种基于Torch库的开源机器学习库,应用于计算机视觉和自然语言处理等应用,本章内容将从安装以及通过Torch构建基础的神经网络,计算梯 ...

  9. caffe_手写数字识别Lenet模型理解

    这两天看了Lenet的模型理解,很简单的手写数字CNN网络,90年代美国用它来识别钞票,准确率还是很高的,所以它也是一个很经典的模型.而且学习这个模型也有助于我们理解更大的网络比如Imagenet等等 ...

随机推荐

  1. LiteOS创建任务的一个BUG

    在任务创建的时候,参数无法传递,第二个参数本来是用来做参数传递的,但是却没用到,很尴尬啊,缺少了这个功能,很多无法写了? osThreadId_t osThreadNew (osThreadFunc_ ...

  2. git 创建新项目,下载工程,合并和更新工程简单应用记录

    以前使用SVN很顺手,现在公司使用git来管理代码,因此学习git的基本使用. 一.首先介绍下SVN和git的简单比较: SVN是使用得最多的版本控制管理工具. 1.是一个集中式的版本管理工具.所有的 ...

  3. java 多维数组转化为字符串

    int[][] a = {{1,2,3},{4,5,7}}; System.out.println(Arrays.deepToString(a)); Arrays.deepToString()此方法是 ...

  4. 「题目代码」P1039~P1043(Java)

    P1039 谭浩强C语言(第三版)习题4.9 import java.util.*; import java.io.*; import java.math.BigInteger; public cla ...

  5. lesson 20 pioneer pilots

    lesson 20 Pioneer pilots driver pilot rider cyclist 骑自行车的人 介词后不加that cover + 距离 = travel 了一段距离 by su ...

  6. CSP201709-1:打酱油

    引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...

  7. MySql优化浅析

    优化点:合理的使用索引,可以大幅度提升sql查询效率,特别查询的表的数据量大的时候,效果明显.一.引言 公司的产品XX出行上线正式运营,随着数据量的变大,司机2000+,日订单1万+,注册乘客26W+ ...

  8. ionic 日期插件学习

    <ion-header> <ion-navbar> <ion-title> DateTime </ion-title> </ion-navbar& ...

  9. Vuejs 基础与语法

    Vue 实例 创建第一个实例 {{}} 被称之为插值表达式.可以用来进行文本插值. <!DOCTYPE html> <html lang="en"> < ...

  10. 使用手机登录OWA修改密码的问题

    最近发现使用手机端登录OWA,安卓手机是可以修改密码的,如图1,但是iPhone就不成,safari和第三方都不可以,如图二. 图一 图二