C++程序无报错停止运行,第二个for循环的cin处卡住该如何解决?
问题排查结果
你代码运行异常的核心原因和修复方案如下:
- 核心问题:你使用了**变长数组(VLA)**语法,
int bezorgen[a];、int afhalen[a];这种用变量定义数组长度的写法不属于标准C++语法,仅部分编译器(如GCC)提供非标准扩展支持,运行时极易出现栈溢出、内存布局异常等不可预期问题,这是你第二次循环卡住的最常见诱因。 - 次要排查点:如果排除语法问题后仍有异常,要确认你的输入逻辑和代码匹配:代码要求先输入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
相关产品推荐
相关产品推荐

