C语言求一个N行N列的矩阵的转置矩阵矩阵的行换成列,列换成行输入描述 第一行一个整数n<20,表示有n组测试数据,下面是n组数据; 第二行是一个数N(2<N<10) 接下来N行每行有N个整数(所有
时间: 2024-12-03 07:30:47 浏览: 64
在C语言中,为了求解一个N行N列的矩阵的转置矩阵,首先需要明确输入格式。这里是一段描述输入的方式:
**输入描述**:
1. 首先读取一个整数`n`(表示有n组测试数据,其中`1 <= n < 20`),然后进入数据分隔阶段。
2. 对于每组测试数据,读入一个整数`N`(表示矩阵的行数和列数,满足条件`2 < N < 10`)。
3. 接下来`N`行,每行包含`N`个整数,表示原始矩阵的元素。这些整数范围通常是你想要处理的数值范围。
**输出描述**:
你需要将每一组输入的矩阵按行转置后输出,即原来的列变成新的行,原来的行变成新的列。
下面是一个简单的C语言函数示例,用于计算并打印矩阵转置:
```c
#include <stdio.h>
#define MAX_SIZE 9 // 可调整为更大的值,如果N最大为10
void transpose(int matrix[MAX_SIZE][MAX_SIZE], int n) {
for (int i = 0; i < n; ++i) {
for (int j = i; j < n; ++j) {
// 交换行(i)和列(j)对应的元素
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i]; // 行转为列
matrix[j][i] = temp; // 列转为行
}
}
}
// 主函数示例
int main() {
int t, N;
scanf("%d", &t); // 测试数据的数量
while (t--) {
scanf("%d", &N); // 矩阵的行数和列数
int matrix[MAX_SIZE][MAX_SIZE];
// 读取矩阵元素
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
scanf("%d", &matrix[i][j]);
}
}
// 转置矩阵
transpose(matrix, N);
// 打印转置后的矩阵
printf("转置后的矩阵:\n");
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
return 0;
}
```
阅读全文