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

C++代码输出异常排查:输入指定数据后输出为0112而非预期值2的原因分析

问题分析与代码修正

嘿,我来帮你理清这个代码的问题所在~

核心问题:输出位置错误

你的代码逻辑其实是对的,唯一的bug就是把输出语句放在了循环内部,导致每处理一个箱子就输出一次当前的计数,而不是最后输出最终的总数量。

错误输出的原因拆解

拿你提供的输入4 1 2 2 4 5 6 6 10来说,程序的执行流程是这样的:

  • 第一个箱子:t=1, c=2,剩余容量2-1=1,不满足≥2,count保持0 → 输出0
  • 第二个箱子:t=2, c=4,剩余容量4-2=2,满足条件,count变为1 → 输出1
  • 第三个箱子:t=5, c=6,剩余容量6-5=1,不满足,count保持1 → 输出1
  • 第四个箱子:t=6, c=10,剩余容量10-6=4,满足条件,count变为2 → 输出2
    这些输出连在一起就变成了0112,和你看到的结果一致。

修正后的代码

只需要把cout<<count;移到for循环的外面,等所有箱子处理完后再输出最终的计数即可:

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n,x,y,i,count=0,z;
    cin>>n;
    for(i=0;i<n;i++) {
        cin>>x>>y;
        z=y-x;
        if(z>=2) {
            count++;
        }
    }
    cout<<count; // 移到循环外部,只输出最终结果
    return 0;
}

验证修正结果

用你提供的输入测试,程序会在处理完所有4个箱子后,输出最终的count值2,和你预期的正确结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:27:27