将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。在主函数中调用函数fun

急需

第1个回答  2010-07-15
#include <stdio.h>
#include <stdlib.h>

void fun(int Data[][4],int ColData[])
{
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
ColData[j*5+i] = Data[i][j];
}
}
}

int main(int argc, char **argv)
{
int Data[5][4] =
{
9, 7, 6, 6,
3, 5, 3, 3,
6, 6, 4, 7,
7, 5, 1, 4,
1, 2, 8, 0
};

int i, j;
int ColData[20];

for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
printf("%4d", Data[i][j]);
}
printf("\n");
}

printf("\nThe Col Major Matrix:\n");
fun(Data,ColData);

for(i=0;i<20;i++)
{
printf("%3d", ColData[i]);
}
printf("\n");

system("pause");
return 0;
}

已实现本回答被提问者采纳
第2个回答  2010-07-15
#include <stdio.h>
#define M 4
#define N 4
void main()
{
int a[M*N] = {0},b[M][N],i,j,k=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
scanf("%d",&b[i][j]);
}

for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
a[k++]=b[i][j];
}

for(i=0;i<M*N;i++)
{
printf("%d ",a[i]);
}

}
第3个回答  2010-07-15
fun(int *p[M][N], int *q[M*N])
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
q[i]=p[j][i];
}
}
}

main()
{
//M N 就宏替换一下
int a[M][N];
int b[M*N];
//赋值就自己写吧
fun(a,b);

}
相似回答