矩阵转置(有问题待补充)

直接上代码

#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("
");
    } 
}
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,这样会把除对角线元素外的一半元素进行交换,从而达到转置的效果。

人生如逆旅,我亦是行人
原文地址:https://www.cnblogs.com/sz2003/p/14158446.html