菜鸟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; }