c语言将一个二维数组的行列互换

注意是吧{{1,2,3},{4,5,6}}换成{{1,2},{3,4},{5,6}}而不是{{1,4},{2,5},{3,6}}

int y[2][3]={
    {1,2,3},
    {4,5,6},
};
int index[2][3]={
    {0x00,0x01,0x10},
    {0x11,0x20,0x21},
};
int x[3][2];
int i,i1,temp;
for(i=0;i<2;i++){
    for(i1=0;i1<3;i1++){
        temp=index[i][i1];
        x[temp>>4][temp&0xf]=y[i][i1];
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-10-24
用函数void fun(int *a, int *b, int NX, int NY);
NX,NY 是行列,列行。NX*NY 等于元素总个数。
#include<stdio.h>

void fun(int *a, int *b, int NX, int NY){
int i;
for (i=0;i<NX*NY;i++) b[i]=a[i];
}
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2];
int i,j;
fun(&a[0][0], &b[0][0], 2, 3);
for (j=0;j<3;j++)
{
for (i=0;i<2;i++)printf("%d ",b[j][i]);
printf("\n");
}
return 0;
}
相似回答