问题描述
编程实现矩阵转置,并求对角线之和。
代码实现:
#include<stdio.h>
#define N 4
void main(){
int a[N][N],(*p)[N];
int i,j,t,s=0;
//输入读取数据
printf("input a: \n");
for(i=0;i<N;i++){
printf("input the %dth row:\n",i+1);
for(j=0;j<N;j++){
scanf("%d",&a[i][j]);
}
}
p=a;
for(i=0;i<N;i++){
//累加对角线上的元素
s+=*(*(p+i)+i);
//矩阵转置
for(j=i+1;j<N;j++){
t=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=t;
}
}
printf("\n");
//输出转置后的矩阵
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%4d",*(*(p+i)+j));
}
printf("\n");
}
printf("s=%d\n",s);
}
代码运行截图: