矩阵转置
1. n*n 对角线置换
#include <stdio.h>
//编写函数:实现4*4矩阵的转置。
//要求:在main函数中定义二维数组、输入数据、输出原矩阵、调用函数、输出转置后的矩阵。
int ZhuanZhi(int arr[][4]){int temp;for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ if(j>i){temp=arr[i][j];arr[i][j]=arr[j][i];arr[j][i]=temp;}} } printf("转置后的矩阵为:\n");int i,j;for(i=0;i<4;i++){for(j=0;j<4;j++){printf("%4d",arr[i][j]); //数字宽度为4 正为右对齐}printf("\n");}
}
int main(){int i,j;int arr[4][4];printf("请输入16个数,用空格分开:\n");for(i=0;i<4;i++){for(j=0;j<4;j++){scanf("%d",&arr[i][j]);}} printf("原矩阵为:\n");for(i=0;i<4;i++){for(j=0;j<4;j++){printf("%4d",arr[i][j]); //数字宽度为4 正为右对齐}printf("\n");}ZhuanZhi(arr);
}
2. 非n*n
#include <stdio.h>
int main(){int i,j;int arr[2][3]={{1,2,3},{4,5,6}};printf("初始矩阵为:\n");for(i=0;i<2;i++){ for(j=0;j<3;j++){printf("%d ",arr[i][j]);}printf("\n");} int a[3][2];for(i=0;i<2;i++){ for(j=0;j<3;j++){a[j][i]= arr[i][j];}} printf("转置后的矩阵为:\n");for(i=0;i<3;i++){ for(j=0;j<2;j++){printf("%d ",a[i][j]);}printf("\n");}
}