请问在C语言中,如何将二维数组的值赋给一维数组。谢谢!

如题所述

可以采用两种方式:
1 按元素赋值:
遍历一维数组,并将每个元素赋值到二维数组的对应元素上。
或者遍历二维数组,将每个元素赋值为一维数组对应值上。
优点为操作灵活,可以按照需要任意赋值。

2 当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。
如一维数组为a,二维数组为b,基础类型为TYPE,需赋值元素个数为n,可以调用
memcpy(b,a,sizeof(TYPE)*n);
该方法有点为操作简单,执行效率高。
不过所需满足的前提条件多。在满足上述所有条件时,用memcpy的方式更为简单。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-11
int i,j,a[3][4],b[12];
int n=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
b[n++]=a[i][j];
}

就OK了!
给点辛苦分吧!谢谢!!!本回答被提问者和网友采纳

请问在C语言中,如何将二维数组的值赋给一维数组。谢谢!
1 按元素赋值:遍历一维数组,并将每个元素赋值到二维数组的对应元素上。或者遍历二维数组,将每个元素赋值为一维数组对应值上。优点为操作灵活,可以按照需要任意赋值。2 当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。如一维数组为a,...

c语言中能把一个二维数组的值赋给一个一维数组吗
当然可以了。例如:include <stdio.h>void main(){int i,j,k=0,a[2][2]={1,2,3,4},b[4];for(i=0;i<2;i++)for(j=0;j<2;j++){b[k]=a[i][j];k++;}for(k=0;k<4;k++)printf("%d ",b[k]);}运行结果:就是将一个2×2的二维数组的值按顺序赋给一个一维数组。

C++二维数组给一维数组赋值
二维数组中的元素本身是连续存储的,如果要将二维数组连续的一组数据赋值给一维数组,可以直接调用memcpy函数。该函数声明在cstring中,形式为 void* memcpy(void *dst, void *src, size_t length);功能为将src地址上,长度为length字节的数据,复制到dst地址上。比如将第二三两行(这两行是连续的),...

c语言二维数组变成一维数组的通项公式
对二维数组用两次循环,将其赋值到一维数组就够了。举个例子,二维数组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];

...的方式把一个二维数组的元素存入一个一维数组中,并输出?
\/\/将二维数组内的数值写入一维数组 for (int i = 0; i < len; i++){ \/\/确定行号 用索引 i 除以(每行中有几列) 得到行数 int y = i \/ column; \/\/ 如 第5个数 \/ 每列有3个,则为 4\/3= “1”(第二行)\/\/确定列 int x = i % column; \/\/ 如 第5个数 % 每列有3个...

C语言一道题,随机生成一个二维数组,求每行最大值并存到一个一维数组中...
\/\/1 - 10的随机 \/*---遍历每排变量并找出最大值并赋值在一维数组对应的数位上---*\/ for (i = 0; i < 10; i++) \/\/二维数组换排 { Big = pTwo[i][0]; \/\/假设每排的第一个元素是最大值 \/*--遍历每排的每个元素,如果有比Big大的就把值赋给Big---*...

C语言中如何把二维数组按列用一维数组输出来
按列遍历,并输出到一维数组即可.void covert(int a[M][N], b[M*N]){ int i,j,n; for(i = n = 0; i < N; i++) { for(j = 0; j < M; j ++) { b[n++] = a[j][i]; } }}

c语言求一个二维数组各列元素的平均值,并将所求得的平均值按顺序存入一...
只用一个二重的循环就可以实现把二维数组的值按列求出平均值,并且存放到一维数组中。然后再输出。include<stdio.h> int main(){ int i,j,a[4][5]= {{12,20,30,25,52},{36,65,22,26,60},{70,54,12,14,6},{2,7,8,12,15} };float b[5]= {0};for(i=0; i<4; i++){...

C语言程序 想问输入了2 4 6 是怎样赋值给x[i], x[1]对应x[1][0] 还...
x是一个二维数组,所以x[i]对应的是第几行的起始地址而不是对应里面的元素,而每一行的起始地址和这行的第0个元素的地址一样,所以把x[i]传给scanf就相当于把&x[i][0]传送给scanf

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

相似回答