转置矩阵问题,利用如下原型输出MxN矩阵,已知m和n的值不超过10
b[i][j] = a[j][i]就行了呀
不知道你这个问题是否已经解决, 如果还没有解决的话:#include <stdio.h>
#include <stdlib.h>
void InputMatrix(int *p, int m, int n);
void Transpose(int *p,int *q,int m,int n);
void PrintMatrix(int *q, int m, int n);
int main()
{
int n,m;
int *p=NULL;
int *q=NULL;
do{
printf("请输入n和m的值(n与m均不大于5):\n");
scanf("%d%d",&n,&m);
}while(m>5||n>5);
p=(int*)malloc(n*m*sizeof(int));
q=(int*)malloc(m*n*sizeof(int));
if(p!=NULL)
{
InputMatrix(p,m,n);
if(q!=NULL)
{
Transpose(p,q,m,n);
PrintMatrix(q,m,n);
}
else{
printf("q_malloc_error!\n");
exit(-1);
}
}
else{
printf("p_malloc_error!\n");
exit(-1);
}
free(p);
free(q);
p=NULL;
q=NULL;
return 0;
}
void InputMatrix(int *p, int m, int n)
{
int i,j;
printf("\n输入 %d*%d 矩阵:\n",n,m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",p+m*i+j);
}
}
}
void Transpose(int *p,int *q,int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
*(q+m*i+j)=*(p+m*j+i);
}
}
}
void PrintMatrix(int *q, int m, int n)
{
int i,j;
printf("\n转置矩阵为:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",*(q+m*i+j));
}
printf("\n");
}
}