菜鸟C程入门,求大神解救
编写一个函数(参数用指针)将一个3×3矩阵转置,并且求该矩阵的迹(矩阵的迹是对角元素之和)。

程序代码:#include <stdio.h>
#define S(a) sizeof (a)
int main()
{
int move(int (*p)[3],int m,int n);
int a[3][3];
int sum=0;
int *p=*a;
int (*pl)[S(*a)/S(int)]=a;
for (;p<*a+S(a)/S(int);scanf("%d",p++));
sum=move(pl,S(a)/S(*a),S(*a)/S(int));
for (p=*a;p<*a+S(a)/S(int);printf((p-*a)%3==2?"%3d\n":"%3d",*p++));
printf("矩阵的迹为:%d\n",sum);
return 0;
}
int move(int (*p)[3],int m,int n)
{
int i=0;
int j=0;
int sum=0;
for (i=0;i<m;i++)
for (j=i;j<n;j++)
{
int t;
t=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=t;
}
for (i=0;i<m;i++)
sum+=*(*(p+i)+i);
return sum;
}
