描述
输入一个N*N的矩阵,将其转置后输出。要求:不得使用任何额外数组(就地逆置)。
输入描述:
输入的第一行包括一个整数N,(1<=N<=100),代表矩阵的维数。 接下来的N行每行有N个整数,分别代表矩阵的元素。
输出描述:
可能有多组测试数据,对于每组数据,将输入的矩阵转置后输出。
示例1
输入:
3 1 2 3 4 5 6 7 8 9
复制输出:
1 4 7 2 5 8 3 6 9
答案
#include <stdio.h>
#define MAX_SIZE 100
void transposeMatrix(int matrix[MAX_SIZE][MAX_SIZE], int n) {
int i, j, temp;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
void printMatrix(int matrix[MAX_SIZE][MAX_SIZE], int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int n, i, j;
int matrix[MAX_SIZE][MAX_SIZE];
// 读取输入
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 转置矩阵
transposeMatrix(matrix, n);
// 输出转置后的矩阵
printMatrix(matrix, n);
return 0;
}
详解
本题较为简单