C++笔记(6)——关于OJ的单点测试和多点测试
单点测试
PAT使用的就是单点测试(LeetCode应该也是单点测试)。单点测试中系统会判断每组数据的输出结果是否正确,正确则通过测试并获得这则测试的分值。题目的总得分等于通过的数据的分值之和。
代码编写上单点测试只要求程序能够按照正常逻辑执行一遍。
多点测试
多点测试要求程序能够一次性运行所有数据,并且要求所有输出结果都完全正确才能AC,只要一组数据输出错误那么这题就只能0分。大部分OJ都是这种方式。只有这种方式才能严格考验写出的代码是否严谨。多点测试的程序需要能够运行所有数据,所以必须保证程序有办法反复执行代码核心部分,所以需要用到循环。
通常题目有3中输入格式,下面是对应的输入程序:
while...EOF型
scanf函数返回值为成功读入的参数的个数,当读入失败的时候scanf函数返回-1,而C中使用EOF(End Of File)来表示-1。
while(scanf("%d", &n) != EOF) {
// 这里填运行代码
}
另外有gets(str):
while(gets(str) != NULL) {
// 这里填核心代码
}
while...break型
这是用在题目要求当输入的数据满足某个条件时停止输入时的,例如当输入的a和b都为0时结束输入:
#include <stdio.h>
int main() {
int a, b;
while(scanf("%d%d", &a, &b) != EOF) {
if(a==0 && b==0) break;
printf("%d\n", a+b); // 这里可以换成别的
}
return 0;
}
另一种是将推出条件放在while判断中:
#include <stdio.h>
int main() {
int a, b;
while(scanf("%d%d", &a, &b), a || b) {
printf("%d\n", a+b);
}
return 0;
}
这样当a和b中只要有1个不是0那么就会一直循环下去。
while(T--)型
这种就是每次都会给定测试数据的组数,所以需要变量T来存储程序要执行的次数,最后程序循环执行T次,每次解决一组数据:
#include <stdio.h>
int main() {
int T, a, b;
scanf("%d", &T):
while(T--) {
scanf("%d%d", &a, &b);
printf("%d\n", a+b);
}
return 0;
}
此外,多点测试中要注意每次循环前重置一下变量和数组,重置数组通常用memset或fill。
参考
《算法笔记》 胡凡 著
C++笔记(6)——关于OJ的单点测试和多点测试的更多相关文章
- 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试
机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...
- 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用
目录 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用 21.1 read命令键盘读取变量的值 21.1.1 read常用见用法及参数 21.2 流程控制语句if 21.2 ...
- web测试与app测试的区别
才开始做测试就接触的web端,后来也接触app端,所以在这里对于自己工作中所接触到的做一些总结(总要养成总结的好习惯). 对于web端和移动端app,功能方面的测试,例如测试设计方法这些都大同小异,都 ...
- (转)学习使用Jmeter做压力测试(一)--压力测试基本概念
一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行. 通过负载测试,确定在各种工作负载下 ...
- Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。
#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类T ...
- Android Testing学习01 介绍 测试测什么 测试的类型
Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...
- <转>iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!
原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新 获取"产品付费数量等于0 ...
- app测试与web测试的区别
1.从功能测试的来讲的话,在流程和功能测试上是没有区别的.系统测试和一些细节可能会不一样. 那么我们就要先来了解,web和app的区别. web项目,一般都是b/s架构,基于浏览器的,而app则是c/ ...
- Android渗透测试Android渗透测试入门教程大学霸
Android渗透测试Android渗透测试入门教程大学霸 第1章 Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...
随机推荐
- 微信授权获取code/openid
微信网页授权 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域名的说明 1.在微信公众号请求用户网页授权之前,开发者需要 ...
- Python自动化学习--控制浏览器
from selenium import webdriver import time driver = webdriver.Chrome() driver.get("https://www. ...
- 005-sort 命令使用
字符处理命令 sort 排序命令 排序选项: -f, --ignore-case 忽略字母大小写 -n, --numeric-sort 根据字符串数值比较 -r, --reverse 逆序输出排序结果 ...
- De Moivre–Laplace theorem
网址:https://en.wikipedia.org/wiki/De_Moivre%E2%80%93Laplace_theorem De Moivre–Laplace 中心极限定理的证明.主要用到s ...
- set -xv
1.set -x 或set xtrace 会显示+以及脚本中的内容(执行的部分,没执行的不显示) set -xv(脚本中所有的内容都显示,包括没执行的部分) 2.debug=3 //多层级调试 t ...
- web测试方法小结----以便于测试用例
今天在整理电脑的时候,发现一些之前总结过得web 测试的一些方法,以便于写测试用例.现在整理一下,就当复习一下软件测试基础. 一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数 ...
- js 文件下载 兼容ie
前置条件:后台接口返回二进制流文件 一.设置前端请求的的 responseType: 'blob' 二.接收请求数据并调用下载 var content = res.data // 接口返回的二进制流v ...
- 容器镜像服务 联手 IDE 插件,实现一键部署、持续集成与交付
容器技术提供了一种标准化的交付方式,将应用的代码以及代码环境依赖都打包在一起,成为一个与环境无关的交付物,可以被用在软件生命周期的任何阶段,彻底改变了传统的软件交付方式. 甚至可以说,是在容器技术之后 ...
- php array_shift()函数 语法
php array_shift()函数 语法 作用:删除数组中第一个元素,并返回被删除元素的值.富瑞联华 语法:array_shift(array) 参数: 参数 描述 array 必需.规定数组. ...
- tapmode="hover"属性
.hover{ opacity: .; } <span tapmode="hover" onclick="fnOpen()">open</sp ...