矩阵转置(有问题待补充)
直接上代码
#include <stdio.h> #include <stdlib.h> void change(int (*a)[3]); int main(){ int a[3][3]; int i,j; //输入数组 for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&a[i][j]); } } change(a); for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("%3d",a[i][j]); } printf("\n"); } } void change(int (*a)[3]){ int i,j,temp; for(i=0;i<3;i++){ for(j=i+1;j<3;j++){ temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } } }
这里要注意二维数组作为函数参数的形式void change((*a) [3])
如果第二个从零开始,那么就会转置两次,把已经转置好的矩阵给重新转置回来,j=i+1,这样会把除对角线元素外的一半元素进行交换,从而达到转置的效果。
人生如逆旅,我亦是行人