求矩阵a[M][N]的转置矩阵b[N][M]

以下程序的功能是求矩阵a[M][N]的转置矩阵b[N][M]。要求分别输出原矩阵a[M][N]和转置后的矩阵b[N][M]。

#include “stdio.h”

#define M 3

#define N 4

void main( )

{int a[M][N]={{1,2,3,4},{5,6,7,8 },{9,10,11,12}};

int b[M][N]; ★

int i,j;

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

{for(j=0;j < N;j++)printf(“%3d”,a[i][j]);

printf(“\n”);}

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

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

b[i][j]=a[j][i];

printf(“\n”);

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

{for(j=0;j < N;j++)★

printf(“%3d”,b[i][j]);

printf(“\n”);}

}

 

 

答案

int b[M][N];      改为    int b[N][M];
 for(i=0;i < M;i++)  改为    for(i=0;i < N;i++)
 for(j=0;j < N;j++)  改为    for(j=0;j < M;j++)
 for(i=0;i < M;i++)  改为    for(i=0;i < N;i++)
 for(j=0;j < N;j++)  改为    for(j=0;j < M;j++)
 
 
#include “stdio.h”
#include “conio.h”
#define M  3
#define N  4
 void main( )
 {
  int a[M][N]={{1,2,3,4},{5,6,7,8 },{9,10,11,12}};
  int b[N][M];
  int i,j;
  for(i=0;i < M;i++)
   {for(j=0;j < N;j++)
       printf(“%3d”,a[i][j]);
     printf(“\n”);}
  for(i=0;i < N;i++)
    for(j=0;j < M;j++)
       b[i][j]=a[j][i];
  printf(“\n”);
  for(i=0;i < N;i++)
   {for(j=0;j < M;j++)
       printf(“%3d”,b[i][j]);
     printf(“\n”);}
  getch();
}
 
程序的执行结果如下
  1  2  3  4
  5  6  7  8
  9 10 11 12
 
  1  5  9
  2  6 10
  3  7 11
  4  8 12

© 版权声明
THE END
喜欢就支持以下吧
点赞22 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容