如何使用for循环在C ++中将1D数组的值放入2D数组中

时间:2017-07-22 17:53:25

标签: c++ arrays loops for-loop

我想将1 D数组的值放入2D数组中。然后我想打印出2D数组的值。

我有以下代码:

client_secret_proof

输出应为:

#include <string.h>
#include <fstream>
#include <iostream>
#include <conio.h>          //for _kbhit
using namespace std;
#define MAX_N 100

#include<stdio.h>

int c[MAX_N] = {35, 23 , 56 , 30, 110 , 123 , 13 , 31 };

int b[4][4];
int main()
{

    int i,j,k,l;
    for(i=0;i<8;i++)
    { cout << c[i];}
    cout << endl;

    for(i=0;i<4;i++)
    {   for(j=0;j<4;j++)
         {
          b[i][j] = c[i];
         }
    }
    for(i=0;i<4;i++)
        {
            for(j=0;j<4;j++)
                {
                    cout << b[i][j] << " ";
                }
        cout << "\n";   
        cout << "\n";
        }
cout << "\n\nHit<enter> to finish";
while ( !_kbhit());
return (0);
}

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

让原始数组

int arr[] = {10, 20, 30, 40, 50, 60};

您可以选择所需的行数,以便相应地将数组划分为2个维度。

int row;
cout << "Enter Number of rows: ";
cin >> row;

之后通过

计算列数来初始化2D数组
int size = sizeof(arr)/sizeof(int);
int col = (int) ceil(size/row); // from math.h/cmath library
int array[row][col];

现在迭代并使用1D数组填充2D数组

int idx = 0;
for(int i=0; i<row; i++)
    for(int j=0; j<col && idx<size; j++) 
        array[i][j] = arr[idx++]; 

干运行

arr = [10, 20, 30, 40, 50, 60]

Enter Number of rows = 2

array = {{10, 20, 30},
         {40, 50, 60}}

使用1D数组在填充2D数组的内部嵌套循环中编辑:idx<size。这样您就可以处理奇数大小的1D阵列。

答案 1 :(得分:0)

如果c有16个元素:

for(int i = 0, row = 0; row < 4; ++row)
{
    for(int column = 0; column < 4; ++i, ++column)
    {
        b[row][column] = c[i];
    }
}