C语言设计程序二维数组变一维怎么变

C语言设计程序二维数组变一维怎么变

提供一个最简单的办法:设原二维数组是int a[N][M];,再声明一个与a的元素类型兼容的指针,如int *p;,然后将a强制为(int *)型赋给p,即p=(int *)a;。这样操作后,用a仍然对原数组能进行二维数组操作,而用p就可按一维数组对原数组进行操作了(相当于将二维数组变成了一维数组p)。验证代码如下:

#include "stdio.h"
#define N 3
#define M 4
int main(int argc,char *argv[]){
int a[N][M]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},i,j,*p;
p=(int *)a;//将二维数组a变成一维数组p
for(i=0;i<N;i++){
for(j=0;j<M;printf("%3d",a[i][j++]));//用数组名a仍然按二维数组操作
printf("\n");
}
printf("\n");
for(j=M*N,i=0;i<j;printf("%3d",p[i++]));//用p则按一维数组操作
printf("\n");
return 0;
}

运行结果如下图:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-30
对二维数组用两次循环,将其赋值到一维数组就够了。
举个例子,二维数组a[N][M],一维数组b[]

编写主函数部分:
int i,j,k=0;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
b[k++]=a[i][j];

希望能帮到你 O(∩_∩)O~
第2个回答  2017-07-07
最容易写的办法就是两个for循环遍历这个二维数组,将遍历的每个值保存在一维数组里。
第3个回答  2017-06-25
二维数组怎么变一维这是不可能的
比如你输入了一个arr[10][10];
你要变成一维就会是十个arr1[10];
而且原本二维数组存储区相连的结构就会被破坏,不光没有任何作用反而会异常的麻烦和不方便。
第4个回答  2017-07-22
char name[N][MAX_LEN]
是二维字符数组,也就是一维的字符串数组
其中name[i]是第i个串
这个是C字串的基础,你可参考下你的教材
相似回答