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

C++二维数组输出列数异常求助:无法实现8x8数组相加

8x8二维数组相加功能的问题排查与修复

问题分析

你的代码有三个关键问题,直接导致无法实现预期的8x8数组相加功能:

1. 循环边界没写对

你定义的是8x8的数组,但循环条件用了i < 7和j < 7——这只能遍历前7行、7列的元素,数组最后一行(索引7)和最后一列(索引7)的元素根本没被初始化,内存里都是随机垃圾值。要覆盖整个8x8数组,循环条件得改成i < 8和j < 8。

2. 循环嵌套逻辑乱,还提前退出了

你在计算完addition数组的第一行(i=0)之后,直接套了输出的双重循环,而且输出完第一行就执行了return 0——程序直接退出,后面的7行数据根本没机会处理,自然看不到完整的8组结果。

3. 输出格式太散,导致视觉误解

现在的输出是每个元素单独占一行,看起来像是“列数不够”,实际上是你没按行的逻辑来组织输出,导致结构混乱。

修复后的代码

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime> // 补充time函数所需的头文件

using namespace std;

int main() {
    srand(time(0));
    
    int array1[8][8];
    int array2[8][8];
    int addition[8][8];
    
    // 填充array1的全部8x8元素
    for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {
            array1[i][j] = rand() % 6;
        }
    }
    // 填充array2的全部8x8元素
    for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {
            array2[i][j] = rand() % 8;
        }
    }
    // 计算两个数组的和
    for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {
            addition[i][j] = array1[i][j] + array2[i][j];
        }
    }
    // 按行输出结果,每行展示8组对应元素与和
    for (int i = 0; i < 8; i++) {
        cout << "第" << i+1 << "行:" << endl;
        for (int j = 0; j < 8; j++) {
            cout << "array1[" << i << "][" << j << "] = " << setw(2) << array1[i][j]
                 << " | array2[" << i << "][" << j << "] = " << setw(2) << array2[i][j]
                 << " | 和 = " << setw(2) << addition[i][j] << endl;
        }
        cout << "-------------------------" << endl;
    }
    
    return 0;
}

修复说明

  • 修正循环边界,确保所有8x8数组元素都被正确初始化和计算。
  • 重构代码结构:将数组填充、求和、输出三个步骤拆分,移除提前退出的return 0,保证所有数据都能被处理。
  • 优化输出格式,按行分组展示每个位置的元素与和,用setw让输出对齐,结构更清晰。
  • 补充了缺失的<ctime>头文件,保证time()函数能正常编译运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:05:59