以下程序的功能是求矩阵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
暂无评论内容