矩阵的转置
/*此程序用来将任意输入的一个矩阵转置*/#include<stdio.h>
void scanf_matrix(); /*用来输入一个任意小于256阶的矩阵,先要输入是N*M的矩阵*/
void display(int matrix_ss[256][256],int i,int j); /*矩阵的显示,i和j表示行和列*/
void transform(int matrix_ss[256][256],int i,int j); /*矩阵的转置,i和j表示行和列*/
int m,n;/*m和n用来装矩阵的初始行和列*/
int matrix_a[256][256],matrix_b[256][256];/*matrix_a[256][256]表示转置前输入的矩阵;matrix_b[256][256]表示转置后的矩阵*/
void main()
{
printf("Please input a matrix\n");
scanf_matrix();
display(matrix_a,m,n);
transform(matrix_b,m,n);
display(matrix_b,m,n);
}
void scanf_matrix()
/*用来输入一个任意小于256阶的矩阵,先要输入是N*M的矩阵*/
{
int i,j;
printf("input X*Y\n");
scanf("%d*%d",&m,&n);
printf("I will input a matrix of %d*%d\n",m,n);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&matrix_a[i][j]);
}
}
void display(int matrix_ss[256][256],int x,int y)
/*矩阵的显示,i和j表示行和列*/
{
int i,j;
for(i=1;i<=x;i++)
{
for(j=1;j<=y;j++)
{
printf("%6d",matrix_ss[i][j]);
}
printf("\n");
}
printf("\n\n");
}
void transform(int matrix_ss[256][256],int x,int y)
/*矩阵的转置,i和j表示行和列*/
{
int i,j,t;
for(j=1;j<=y;j++) /*先j*/
for(i=1;i<=x;i++) /*后i*/
{
matrix_ss[j][i]=matrix_a[i][j]; /*注意这容易错*/
}
t=n,n=m;m=t; /*交换m和n使转置后的矩阵行和列数目交换,以便于接下来的显示*/
}