非对称矩阵的转置,采用了将一个矩阵的转置矩阵放在另一个数组中的做法
#include <stdio.h>
#include <stdlib.h>
//非对称矩阵的转置
//采用了将一个矩阵的转置矩阵放在另一个矩阵中的做法
void print(int m,int n,int c[m][n]);
void fun(int M,int N,int a[M][N],int b[N][M]);
int main()
{
int M;
int N;
int i;
int j;
int count=1;
printf("请输入矩阵的行长");
scanf("%d",&M);
getchar();
printf("请输入矩阵的列高");
scanf("%d",&N);
getchar();
int a[M][N];
int b[N][M];
printf("请输入矩阵\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
printf("请输入第%d个数值",count++);
scanf("%d",&a[i][j]);
getchar();
}
print(M,N,a);
fun(M,N,a,b);
printf("矩阵:\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf(" ");
printf("%d",b[i][j]);
}
printf("\n\n");
}
printf("\n\n");
print(N,M,b);
return 0;
}
void fun(int M,int N,int a[M][N],int b[N][M])//矩阵的转置函数,矩阵定义为变长矩阵(VLA)
{
int i;
int j;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
b[i][j]=a[j][i];
return b;
}
void print(int m,int n,int c[m][n])//输出矩阵,矩阵定义为变长矩阵(VLA)
{
int i=0;
int j=0;
printf("矩阵:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",c[i][j]);
}
printf("\n\n");
}
printf("\n\n");
}
转载请注明出处!