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

C++程序无报错停止运行,第二个for循环的cin处卡住该如何解决?

问题排查结果

你代码运行异常的核心原因和修复方案如下:

  1. 核心问题:你使用了**变长数组(VLA)**语法,int bezorgen[a];、int afhalen[a];这种用变量定义数组长度的写法不属于标准C++语法,仅部分编译器(如GCC)提供非标准扩展支持,运行时极易出现栈溢出、内存布局异常等不可预期问题,这是你第二次循环卡住的最常见诱因。
  2. 次要排查点:如果排除语法问题后仍有异常,要确认你的输入逻辑和代码匹配:代码要求先输入1个整数a,之后需要连续输入2*a个整数,如果你输入的数值数量不足,cin会进入等待输入状态,看起来就像程序停止运行。

修复后的标准C++代码

使用标准库vector替代变长数组,完全符合C++规范:

#include <iostream>
#include <vector>
using namespace std;
    
int main(){
    int a;
    cin >> a;
    vector<int> bezorgen(a);
    vector<int> afhalen(a);
    
    for (int i = 0; i < a; i++){
        cin >> bezorgen[i];
    }
    
    for (int j = 0; j < a; j++){   
        cin >> afhalen[j];    
    }        
    
    return 0;
}

额外验证建议

  • 修复后如果还是卡住,可以一次性输入所有需要的数值后再回车,避免零散输入时缓冲区残留的换行符干扰cin读取
  • 如需兼容异常输入场景,可以在每次cin操作后增加读取状态判断,处理输入失败的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 19:45:04