C语言数组循环程序部分测试用例运行异常,请求排查修复
问题背景与需求
该软件工具是一个文件仓库,通常存储计算机程序的源代码文件,并具备访问监控功能。源代码的每一次变更都会被追踪,包括变更者、变更原因,以及该变更修复的问题或引入的功能增强的相关参考。这类软件工具对于分布式协作开发至关重要。在本题中,我们采用简化的开发项目模型:项目含N个编号1~N的唯一源文件,工具维护两个序列——忽略序列(不在其中则为未忽略)、追踪序列(不在其中则为未追踪),需输出同时被追踪和忽略的源文件数,以及同时未被追踪和未被忽略的源文件数。
约束条件
- 1 ≤ T ≤ 100
- 1 ≤ M, K ≤ N ≤ 100
- 1 ≤ A1 < A2 < ... < AM ≤ N
- 1 ≤ B1 < B2 < ... < BK ≤ N
输入输出规则
输入
第一行是测试用例数T,每个测试用例含N、M、K三个整数,随后两行分别是严格递增的忽略序列A、追踪序列B
输出
每行输出两个整数,分别为同时被追踪和忽略的文件数、同时未被追踪和未被忽略的文件数
测试用例
正常测试用例
INPUT (STDIN) 2 7 4 6 1 4 6 7 1 2 3 4 6 7 4 2 2 1 4 3 4 EXPECTED OUTPUT 4 1 1 1
异常测试用例
INPUT (STDIN) 2 7 3 6 1 4 6 7 1 2 3 4 6 7 4 2 2 1 4 3 3 EXPECTED OUTPUT 3 1 2 3
强制要求
KEYWORD int a[m],b[k] KEYWORD while KEYWORD for
复杂度指标
CYCLOMATIC COMPLEXITY 9 TOKEN COUNT 245 NLOC 31
提供的代码
#include <stdio.h> int main() { int t, i; scanf("%d", &t); while (t--) { int n, m, k, c1 = 0, c2 = 0; scanf("%d%d%d", &n, &m, &k); int a[m], b[k], c[101]; for (i = 0; i <= 101; i++) c[i] = 0; for (i = 0; i < m; i++) { scanf("%d", &a[i]); c[a[i]]++; } for (i = 0; i < k; i++) { scanf("%d", &b[i]); c[b[i]]++; } for (i = 0; i < 101; i++) { if (c[i] == 2) { c1++; } } for (i = 1; i <= n; i++) { if (c[i] == 0) { c2++; } } printf("%d %d\n", c1, c2); } return 0; }
问题描述
现有上述C语言数组循环程序,在正常测试用例中运行符合预期,但在异常测试用例中运行结果不符合预期,请求排查问题原因并修复代码。
内容的提问来源于stack exchange,提问作者Short
相关产品推荐
相关产品推荐

