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

C++代码中如何将所有数字变体填充到自定义3维数组中?

实现3维数组填充所有数字排列的方法

需求说明

你需要生成的三维数组三个维度刚好对应三位数字的每一位:

  • 第一维索引i:对应三位数的百位,取值范围为0 ~ N
  • 第二维索引j:对应三位数的十位,取值范围为0 ~ 1
  • 第三维索引k:对应三位数的个位,取值范围为0 ~ 3

修改要点

  1. 原代码数组第一维长度需要调整为N+1,才能覆盖0~N的所有百位取值
  2. 三重循环内直接通过索引计算给数组元素赋值即可,计算公式为i*100 + j*10 + k
  3. 输出时加前导零格式化,就能得到你要的000、001这类展示效果
  4. 注意:C++标准不支持变长数组(输入变量N作为数组长度),如果需要跨编译器兼容,建议用vector实现动态数组

可运行代码

兼容原写法版本(依赖编译器对变长数组的扩展支持)

#include <iostream>
#include <iomanip> // 用于格式化补前导零
using namespace std;

int main ()
{
    int N;
    cin >> N;
    // 第一维长度改为N+1,覆盖0~N的所有百位取值
    int array[N+1][2][4]={0};

    for (int i=0; i<=N; ++i)
    {
        for (int j=0; j<2; ++j)
        {
            for (int k=0; k<4 ; ++k)
            { 
                array[i][j][k] = i * 100 + j * 10 + k;
                // 格式化输出为3位,不足补前导零
                cout << setw(3) << setfill('0') << array[i][j][k] << endl;
            }
        }
    }
    return 0;
}

符合C++标准的vector实现版本

#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;

int main ()
{
    int N;
    cin >> N;
    // 用vector定义三维动态数组,符合C++标准
    vector<vector<vector<int>>> array(N+1, vector<vector<int>>(2, vector<int>(4, 0)));

    for (int i=0; i<=N; ++i)
    {
        for (int j=0; j<2; ++j)
        {
            for (int k=0; k<4 ; ++k)
            { 
                array[i][j][k] = i * 100 + j * 10 + k;
                cout << setw(3) << setfill('0') << array[i][j][k] << endl;
            }
        }
    }
    return 0;
}

输入N=2运行上述代码,输出就会从000、001一直遍历到213,完全匹配你给出的示例要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:06:04