一、题目描述
循环输入。每组数据先输入一个 n(n≤10),然后 n 行 n列 数据代表一个矩阵,每个数据为一个整数, 输出它的转置矩阵。当没有任何输入时,程序结束。
方法:
(1)矩阵的置换,也就是将矩阵的行列输出交换,也就是把矩阵分成上下两个三角形,以对角线为分割线,进行输出
(2)先利用异或运算符实现变量的交换
(3)然后在主函数中,分别写矩阵的输入,矩阵的交换,以及矩阵的输出部分的代码
代码如下:
#include "stdio.h"
#define maxn 11
void swap(int*a,int*b)
{
if(a==b)return ;
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}
int mat[maxn][maxn];
int main()
{
int n;
int i,j;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;++i) //矩阵的输入
{
for(j=0;j<n;++j)
{
scanf("%d",&mat[i][j]);
}
}
for(i=0;i<n;++i) //矩阵的置换
{
for(j=i;j<n;++j)
{
swap(&mat[i][j],&mat[j][i]);
}
}
for(i=0;i<n;++i) //矩阵的输出
{
for(j=0;j<n;++j)
{
if(j)printf(" ");
printf("%d",mat[i][j]);
}
puts("");
}
}
}