You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何解决数组乘积非负问题的C++代码中不能使用break语句?

为什么你的代码里不能用break?

你代码里的break会直接导致测试用例失败,核心问题出在输入读取的连贯性上,具体来说:

  • 当遇到第一个0就break终止循环时,当前测试用例的剩余数组元素还没被cin读取,这些未处理的输入会被下一个测试用例当成自己的输入数据,直接打乱后续所有测试用例的输入解析,结果自然全错。
  • 另外补充一点:其实只要数组里有0,不管负数个数是奇是偶,都能通过保留0让乘积为0(满足非负要求),所以统计完整的负数个数也不影响最终判断,但break带来的输入混乱才是致命问题。

举个实际出错的场景:
假设你有两个测试用例:

  1. 第一个测试用例:n=3,数组是 -1 0 -2
  2. 第二个测试用例:n=2,数组是 1 2

原代码处理第一个测试用例时,读到0就break,第三个元素-2没被读取。处理第二个测试用例时,cin>>n会读到残留的-2,而不是预期的2,后面的输入全乱套,测试用例肯定过不了。

把break删掉后,循环会读完当前测试用例的所有元素,既不会漏统计负数,也不会影响下一个测试用例的输入,所以能通过所有测试点。

内容的提问来源于stack exchange,提问作者Rachel Dare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:25:14