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的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...
随机推荐
- Mongo--03 mongo副本集、备份与恢复
目录 一.mongo副本集配置 二.查看副本集状态 三.副本集权重调整 四.创建节点 五.仲裁节点 六.mongo备份与恢复 七.准备测试数据 一.mongo副本集配置 1.创建节点目录和数据目录 # ...
- pam模块
main 循环监控 独立的程序 根据配置防护 登陆 ca cert 私有口令 openssl 证书口令??
- 组件通信 eventtBus
平级组件的通信 一个全局发布订阅模式,它是挂载到全局的 <!DOCTYPE html> <html lang="en"> <head> < ...
- bzoj4764 弹飞大爷 LCT
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4764 题解 如果 \(a_i > 0\) 的话,那么就是 bzoj2002 的原题.直接 ...
- spring security基本知识(三) 过滤详细说明
在我们前面的文章Spring Security 初识(一)中,我们看到了一个最简单的 Spring Security 配置,会要求所有的请求都要经过认证.但是,这并不是我们想要的,我们通常想自定义应用 ...
- os模块 sys模块 json/pickle 模块 logging模块
目录 模块 1. os模块 2. sys模块 3. json和pickle模块 4. logging模块 (1)日志配置 (2)实际开发中日志的使用 模块 1. os模块 os模块有什么用 与操作系统 ...
- ==和is的区别 以及编码和解码
is和==的区别 1. id() id是python的一个内置函数,通过id()可以查看变量表的值在内存中的地址. s1 = 2 print(id(s1)) # 1514368064 s2 = 2 p ...
- overload(重载) 和 override(重写)的区别
overload(重载): 重载是基于一个类中,方法名相同,参数列表不同(如果参数列表相同时,参数的类型要不同),与返回值和访问修饰符都无关 如果在面试中就直接说:"同名不同参" ...
- metaclass简单使用
metaclass : 元类, 就是创建python类对象的类 # 便用type动态创建类 # 1. 使用type创建一个User类对象 无基类,无属性 . () : 表示基类, {}:属性 User ...
- Internet History, Technology, and Security(week5)——Technology: Internets and Packets
前言: 之前都在学习Internet的历史,从这周开始,进入到了Internet技术的学习. Layer1: Link Introduction / The Link Layer 80年代之前,主流网 ...