一维数组怎么转换成二维数组

Python019

一维数组怎么转换成二维数组,第1张

一维数组的算法和二维数组的算法不同

以下是一种转换方式

#include <stdio.h>

#include <stdlib.h>

#define ROW 3

#define COL 2

int main(int argc, char *argv[])

{

int arr1D[] = {1,2,3,4,5,6}

int arr2D[ROW][COL]

int i,j//一维维整型数组转换为二维整型数组 for(i=0i<ROWi++) { for(j=0j<2j++) { arr2D[i][j]=arr1D[i*COL+j]} } //二维整型数组打印显示

for(i=0i<ROWi++) { for(j=0j<COLj++) { printf("%d ", arr2D[i][j])} printf("\n")} system("pause")return 0}

常见问答

转换成二维数组以后怎么才能用更简单的方式a[m][n]去表达呢?如果用那个表达式的话就太麻烦了,我要进行大量的操作,容易出问题。 

答:这个可以用宏来实现。举个例子说,比如你定义一个大小为100的一维数组A,然后你需要别人输入m=8,n=9(很多情况别人不可能按照你的意图来刚好用m和n整除一维数组的下表最大值,也就是说那个一维数组只需要保证足够大就可以了),然后你希望得到一个8*9的二维矩阵B[8][9]。

引用这个二维矩阵的时候,直接使用B[3][4]来引用第三行第四列的元素?

用宏定义(以下宏定义并没有上机调试,只是提供思路)

#define B[(x)][(y)]  A[((x*m)+(y%n)]

解释一下:x*m,加入你需要B[3][4],那么就是对应一维数组第3*8+4%9=28个元素。

不管是几维数组,其实都可以看作是一维的,同样,一维也可以看成几维的。

int a[6] = {0, 1 ,2, 3, 4, 5} // 一维数组

int b[2][3] // 二维数组

int m = 2, n = 3

for (int i = 0i <mi++)

{

for (int j = 0j <nj++)

{

b[i][j] = a[i*n + j]

}

}

把一维数组a转化成了二维数组b

1、我们先是定义一个二级指针和行列变量【int **array,row,column】。

2、然后我们编写输入行列的语句。

3、为其开辟一个一个一维装着一维数组的数组。

4、接下来我们使用【array[i]=(int *)malloc(sizeof(int)*column)】为数组再次产生一个新的装着数组的数组。

5、然后我们就可以为其赋值并输出。

6、运行程序后我们就可以看到这样的效果了。