【C/C++】黑盒测试

本文为 C/C++ 学习总结,讲解 OJ 平台的黑盒测试

单点测试

系统判断每组数据输出结果是否正确,按照正常逻辑执行一遍程序即可。

多点测试

要求程序一次运行所有数据。

输入方式

while…EOF 型

如果题目没给定输入的结束条件,默认读取到文件末尾。scanf 函数的返回值为其成功读入的参数的个数。当读取文件时达到文件末尾无法读取时,产生读入失败,scanf 返回 -1 而不是 0,C 语言中使用 EOF 来表示 -1。

当题目没说多少数据要读入时,可利用 scanf 返回值是否为 EOF 判断读入是否结束:

while(scanf("%d", &n) != EOF){}

读入字符串时使用:

while(scanf("%s", str) != EOF){}
while(gets(str) != NULL){} // 注意这里是NULL不是EOF

while…break 型

题目要求输入符合某条件时停止。例如输入 a、b 都为 0 时结束输入:

while(scanf("%d%d", &a, &b), a || b){}

把推出条件的判断放到 while 语句中,与 scanf 用逗号隔开

while(T–) 型

题目给出测试数据的组数,给出相应组数的输入数据。

while(T--){}

注意:多点测试中,每次循环前要重置变量和数组,重置数组一般使用 memset 或 fill 函数。通常直接在循环里面重新定义变量,或使用 initial 函数。

输出方式

输出一行 N 个整数,每两个间用空格隔开,结尾不能加空格。

for(int i = 0; i < N; i++){
	printf("%d", a[i]);
	if(i < N - 1) printf(" ");
	else printf("\n");
}

猜你喜欢

转载自blog.csdn.net/weixin_44413191/article/details/107702591