##关于C语言如何输出转置矩阵
我们遇到这样的题目,即对于一个给定的 3×3 矩阵,请将其顺时针旋转 90 度后输出。即要求我们输出一个转置矩阵。
为了使结论更具普遍性,此处我们讨论n*n矩阵的转置。
- 方法一 我们可以这样考虑,转置实则是将列转变为行,只需按a[n][1]、a[n-1][1]…a[1][1] a[n][2]…
#include <stdio.h>
int main() {
int a[3][3];
int i;
int j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++){
for(j=2;j>=0;j--){
j==2? printf("%d",a[j][i]): printf(" %d",a[j][i]);
}
printf("\n");
}
return 0;
}
- 方法二
我们发现转置实则元素交换的过程,以下面矩阵为例
我们发现元素交换规律为
故代码如下
#include<cstdio>
int main(){
int a[3][3],i,j,k;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<=1;i++){
for(j=i;j<2-i;j++){
k=a[i][j];
a[i][j]=a[2-j][i];
a[2-j][i]=a[2-i][2-j];
a[2-i][2-j]=a[j][2-i];
a[j][2-i]=k;
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
j==0?printf("%d",a[i][j]):printf(" %d",a[i][j]);
}
printf("\n");
}
return 0;
}
运行结果