B3660 [语言月赛202209] 集卡 题解
Source & Knowledge
2022 年 9 月语言月赛,由洛谷网校入门计划/基础计划提供。
考察对循环结构、多测的掌握与运用。
文字题解
本题考察对多测输入方面的理解与掌握。
本题的大致思路:首先读入一个测试组数 yes,否则输出 no 即可。
补充:对于多测
T 组数据,一般使用这种框架进行编程。int T; cin >> T; while (T--) { // 想要执行的语句 }
一种常见的错误代码为:
while (T--) {
cin >> n;
bool ok = false;
for (int i = 1, x; i <= n; ++i) {
cin >> x;
if (x == 0) {
puts("yes");
ok = true;
break;
}
}
if (ok == false) {
puts("no");
}
}
在这种情况下,例如读入以下数据
2
3
1 0 1
6
1 0 0 0 0 0
考虑读入第一组数据。当读到第二个数字 yes 后直接进行 break,当读入下一组数据的
所以此处无论结果如何,都应当将一组数据完整地读完,而不是在中间直接 break。
while (T--) {
cin >> n;
bool ok = false;
for (int i = 1, x; i <= n; ++i) {
cin >> x;
if (x == 0)
ok = true;
}
if (ok == true)
puts("yes");
else
puts("no");
}