#include <stdio.h>
#define m 2 //1、虽然定义全局变量m,n 但是下面的m,n是形参是得不到值的,改
// 为#define
#define n 3
void TransMatrix(int source[m][n],int dest[n][m]) //2、dest少了类型int ,且参数为n,m
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
dest[j][i]=source[i][j];
}
main()
{
int i,j;
int a[2][3]={1,2,3,4,5,6};
int b[3][2];
printf("orignal array:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
TransMatrix(a,b); /*执行转置*/
printf("convert array:\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
printf("%d ",b[i][j]); //3、- -||这个粗心真纠结,好久才发现,是输出b[i][j]
printf("\n");
}
}
以上通过测试
============================分隔线===================================
当然也建议反所有2换成m, 3换成n。有利于程序里数组的修改。如下:
#include <stdio.h>
#define m 2
#define n 3
void TransMatrix(int source[m][n],int dest[n][m])
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
dest[j][i]=source[i][j];
}
main()
{
int i,j;
int a[m][n]={10,20,30,40,50,60};
int b[n][m];
printf("orignal array:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
TransMatrix(a,b); /*执行转置*/
printf("convert array:\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d ",b[i][j]); //
printf("\n");
}
}
温馨提示:内容为网友见解,仅供参考