C++如何部分填充数组?嵌套循环超出用户输入限制如何解决?
C++二维数组部分填充异常修复方案
核心问题原因
内层for循环的终止条件书写错误,误将列变量j写成了行变量i,导致只要行索引i小于用户输入的列数上限,内层循环就会无限执行,j持续自增最终触发数组越界,程序超出填充限制持续运行。
修复后的填充代码
// 修正后可正常工作的部分填充逻辑 for (int i = 0; i < row; i++) { // 内层循环判断条件修改为j < col,和列索引自身做比较 for (int j = 0; j < col; j++) { cout << "Enter a number for row " << i << " and column " << j << endl; cin >> num; userFilledArray[i][j] = num; } }
其他可优化的代码问题
- 输入校验规则不匹配:你提示用户输入1-10范围内的行列数,但当前校验条件
row < 0 || row >10允许输入0值,会导致后续填充流程直接跳过,建议修改校验条件为row <1 || row>10,列的校验规则同步修改。 - 全局变量冗余:
row、col、userFilledArray均无需定义为全局变量,移动到main函数内部即可,减少全局变量的意外修改风险。 - 缺失函数实现:代码中调用的
getTotal函数尚未实现,补全时注意仅遍历前row行、前col列的有效填充区域,不要遍历整个10*10的数组空间,避免把未初始化的脏值计入总和。
内容的提问来源于stack exchange,提问作者EMAN-GAMING
相关产品推荐
相关产品推荐

