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

2016-12-23 19:25
2016-12-23 21:20

2016-12-23 21:29
2016-12-23 21:35
2016-12-24 05:51
程序代码:#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;
}

2016-12-24 06:48