黑盒测试
对黑盒测试来说,所有输入数据都放在一个文件里。
单点测试
PAT试题基本为单点测试(即一次运行一组数据,一组数据通过测试则获得这组数据的分值)。
多点测试
多点测试要求程序一次运行所有数据,并要求输出结果都正确,只要存在错误,即不得分。
大部分 在线判题系统(Online Judge) 都采用了多点测试。
由于要求程序能运行所有数据,因此必须保证程序能反复执行代码的核心部分,这就要用到循环。
输入类型
题目一般有3中输入的格式,需要采用不同输入方式。
while··· EOF
型
题目没有给定输入的结束条件,则默认读取到文件末尾。
EOF(End Of File)
可以通过
printf("%d", EOF);
读取EOF的数值,一般的设备上值是-1。
EOF操作:
- windows:
Ctrl + Z
- unix:
Ctrl + D
scanf
若成功读入一个值,返回1;若成功读入2个值,返回2;若读入失败,返回 -1,C/C++中,EOF
即为 -1。
正常情况下,控制台中的输入不会失败,只有读取文件时到达文件末尾,导致无法读取时,才会产生读入失败。
1 | //读取数字、字符、字符串 |
while··· break
型
题目要求,当输入的数据满足某个条件时,停止输入。
1 | while (scanf("%d%d", &a, &b) != EOF) { |
while (T--)
型
题目给出测试数据的组数,然后才给出相应数量数组的输入数据。
1 | int T; |
输出
正常输出
每组数据输出之后,额外加一个空行
两组输出数据之间有一个空行,最后一组数据后面没有空行
一般在第三种输入类型
while (T--)
情况下出现,只需通过判断T是否为0选择是否输出额外的换行。
重置变量
在多点测试中,每一次循环都要重置变量和数组,否则在下一组数据来临时,变量和数组不是初始状态,将出错。重置数组一般使用memset
函数或fill
函数。