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

C++正负整数求和输出异常 二维数组列和是否为0校验问题

问题原因分析

你当前输出不符合预期的核心原因是求和逻辑计算的是每一行的和,而非你需要的每一列的和,具体说明如下:

  • 你定义的二维数组int numbers[3][lines]中,第一个下标对应行号(取值02,共3行),第二个下标对应列号(取值0lines-1,共lines列)。
  • 你现有求和循环的外层遍历的是行号,内层遍历同一行的所有列,本质是逐行求和,得到的结果是3个行和:对应你的示例输入,第一行元素为1、1和为2,第二行元素为1、-1和为0,第三行元素为-1、-1和为-2,和你给出的示例输出完全吻合。
修复方案

如果要实现列和计算,只需调换两层循环的遍历顺序,外层遍历列号,内层累加同一列的所有行元素即可,参考代码如下:

for(int j = 0; j < lines; j++){ // 外层遍历每一列
    temp = 0;
    for(int i = 0; i < 3; i++){ // 内层累加当前列的3个行元素
        temp += numbers[i][j];
    }
    // 此处可增加temp是否为0的判断,满足你的业务需求
    cout << temp << endl;
}

额外注意事项

你代码中使用的int numbers[3][lines]属于变长数组(VLA),并不是C标准支持的语法,仅为部分编译器的扩展实现,兼容性较差。建议替换为标准C支持的vector容器实现,写法如下:

vector<vector<int>> numbers(3, vector<int>(lines));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:15:06