/Description
给出一个nn的矩阵,输出它的转置矩阵,即行列互换后输出。
Input
测试数据有多组,第一行的整数T表示测试数据的组数,后跟T组测试数据。
每组的第一行是一个正整数n(1<n<10),后面有一个nn的矩阵。所有数据之间
用空格分隔,都是整数。
Output
对于每组测试数据,输出对应的转置矩阵,输出时按nn的格式,数据之间用一个
空格分隔。
Sample Input
2
3
1 2 3
4 5 6
7 8 9
2
1 2
3 4
Sample Output
1 4 7
2 5 8
3 6 9
1 3
2 4*
实现代码如下:
#include<stdio.h>
#define M 100
#define N 100
int main()
{
int i,j,n,m,c[M][M];
scanf("%d", &m);
while (m--)
{
scanf("%d", &n);
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf("%d", &c[i][j]);
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%d ", c[j][i]);
printf("\n");
}
}
return 0;
}
结果:
供参考:
#include <stdio.h>
#define N 10
void InputMatrix(int* a, int Row, int Col)
{
int i,j;
for (i = 0; i < Row; i++)
for (j = 0; j < Col; j++)
scanf("%d", a + i * Col + j);
}
void TransMatrix(int* a, int Row, int Col)
{
int i,j,tmp;
for(i = 0; i < Row; i++){
for(j = i; j < Col; j++){
tmp = *(a + i * Col + j);
*(a + i * Col + j) = *(a + j * Row + i);
*(a + j * Row + i) = tmp;
}
}
}
void PrintMatrix(int* a, int Row, int Col)
{
int i, j;
for (i = 0; i < Row; i++){
for (j = 0; j < Col; j++)
{
printf("%d ", *(a + i * Col + j));
}
printf("\n");
}
}
int main()
{
int a[N][N] = { 0 }, n = 3, T;
scanf("%d", &T);
while (T--){
scanf("%d", &n);
InputMatrix(a[0], n, n);
TransMatrix(a[0], n, n);
PrintMatrix(a[0], n, n);
}
return 0;
}