编写一个程序,求3X4数组的转置矩阵。要求在main函数里读数,在change函数里把矩阵转置。

编写一个程序,求3X4数组的转置矩阵。要求在main函数里读数,在change函数里把矩阵转置。编写一个程序,求3X4数组的转置矩阵。要求在main函数里读数,在change函数里把矩阵转置。

写了2种。
第一种 数组a[3][4] 转置为 b[4][3]。第2种 数组m*n 转置为 [n*m]。
#include<stdio.h>
void change(int a[3][4],int b[4][3]){
int i,j ;
for (i=0;i<3;i++) for (j=0;j<4;j++) b[j][i]=a[i][j];
}
void change2(int *a,int *t,int m, int n){
int i,j;
for (j=0;j<n;j++) for (i=0;i<m;i++) t[j*m+i]=a[i*n+j];
}

int main() {
int a[3][4]={11,12,13,14,21,22,23,24,31,32,33,44 },b[4][3];
int x[3][4]={41,42,43,44,51,52,53,54,61,62,63,64 },y[4][3];
int i,j;
printf("input a[3][4] data:\n");
for (i=0;i<3;i++) for (j=0;j<4;j++) scanf("%d",&a[i][j]);
printf("before\n");
for (i=0;i<3;i++) {
for (j=0;j<4;j++)printf("%d ",a[i][j]); printf("\n");
}
change(a,b); printf("after\n");
for (i=0;i<4;i++) {
for (j=0;j<3;j++)printf("%d ",b[i][j]); printf("\n");
}
printf("\nbefore\n");
for (i=0;i<3;i++) {
for (j=0;j<4;j++)printf("%d ",x[i][j]); printf("\n");
}
change2(&x[0][0],&y[0][0],3,4);
for (i=0;i<4;i++) {
for (j=0;j<3;j++)printf("%d ",y[i][j]); printf("\n");
}

return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-24
#include<stdio.h> void main() { int a[3][4],b[4][3],i=0,j=0; for(i=0;i<3;i++) { for(j=0;j<4;j++) { scanf("%d",&a[i][j]); } } for(i=0;i<3;i++) { for(j=0;j<4;j++) { b[j][i]=a[i][j]; } } for(i=0;i<4;i++) { for(j=0;j<3;j++) { printf("= ",b[i][j]); } printf("\n"); } }本回答被网友采纳