c语言二维数组交换函数 c语言二维数组交换行

C语言 如何将一个二维数组的值全部替换成另一个二维数组

要想把一个二维数组值全部替换成另一个二维数组的值,前提条件为二者的规模是相同的。即行数和列数分别相同。

创新互联建站是专业的青岛网站建设公司,青岛接单;提供成都做网站、成都网站建设、成都外贸网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行青岛网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

假定均为M行N列,类型为int,即

int a[M][N], b[M][N];

要将a中所有值替换成b的值,有以下两种方法。

1 逐一元素赋值。

使用双重循环,对数组元素遍历并赋值。

代码如下:

int i, j;

for(i = 0; i  M; i ++)

for(j = 0; j  N; j ++)

a[i][j] = b[i][j];//逐元素赋值。

2 整体复制内存。

由于二者结构相同,可以使用C库函数memcpy来实现更高效的数据复制。

void *memcpy(void *dest, const void *src, size_t n);

从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。

调用该函数需要引用string.h头文件。

代码如下:

memcpy(b, a, sizeof(a));

只需要这样一句就可以完成复制操作了。

C语言如何将二维数组中两个元素交换位置

可以让数组进行转置来实现,参考如下:

public class TestTransposition {

int col;

int row;

/**转换方法 将一个数组进行转置

* 原理很简单

*

* @param input

* @return

*/

public int[][] trans(int[][] input) {

int[][] output = null;

row = input.length;

if (row $amp;amp;$nbsp;0) {

col = input[0].length;

}

output = new int[col][row];

for (int i = 0; i $amp; for (int j = 0; j $amp; output[j][i] = input[i][j];

}

}

return output;

}

public static void main(String[] args){

//若是需要得到转置数组,应该调用上面的转置方法

// int[][] in={{1,2,3},{3,4,5}};

// int[][] out=new TestTransposition().trans(in);

// for (int i = 0; i $amp; // for (int j = 0; j $amp; // System.out.print(out[i][j]);

// }

// System.out.println("");

// }

//若只是想输出得到效果 这应该是可以的

int[][] in={{1,2,3},{3,4,5}};

for(int i=0;iin[0].length;i++){

for(int j=0;jin.length;j++){

System.out.print(in[j][i]);

}

System.out.println("");

}

}

/*a[2][3]----a[3][2]

* a[0][0]----a[0][0]

* a[0][1]----a[1][0]

* a[0][2]-----a[2][0]

* a[1][0]----a[0][1]

* a[1][1]----a[1][1]

* a[1][2]-----a[2][1]

*/

//故此 初步想法应是通过反向循环,即先循环列,在循环行来实现。

}

C语言二维数组元素交换

#include stdio.h

//字符的复制作了小小的修改 

void my_strcpy(char *s1,char *s2){

int i;

for(i=0;s2[i]!='\0';i++){

s1[i]=s2[i];

}

s1[i]='\0';

}

void array_swap(char b[][7],int x,int y){

char s[8];

my_strcpy(s,b[y]);

my_strcpy(b[y],b[x]);

my_strcpy(b[x],s);

}

int main(){

char b[][7]={"foo","bar","foobar"};

int i;

array_swap(b,0,2);

for(i=0;i3;i++)

printf("%s\n",b[i]);

}


分享题目:c语言二维数组交换函数 c语言二维数组交换行
当前URL:http://scyanting.com/article/doioigg.html