c语言矩阵转置 输入一个数字构成的矩形,将矩形的值进行转置后打印 输入: 第一行 正整数n(1<n<10),表示矩阵的边长 随后输入一个矩阵 输出: 转置后的矩阵 样例输入: 3 1 2 3 4 5 6 789 样例输出: 1 4 7 258 369
时间: 2024-10-13 18:18:16 浏览: 45
在C语言中,矩阵转置是一个常见的操作,通常涉及到二维数组的元素交换。给定一个由正整数构成的n x n大小的矩阵,你需要按照行和列的顺序交换每个元素的位置,以便创建一个新的转置矩阵。
首先,你需要读取输入的矩阵尺寸n和原始矩阵的所有元素。然后,通过两层循环,外层遍历行,内层遍历当前行的每一个元素,将其存储到临时数组中,同时将原下标(i, j)变为新下标(j, i)。最后,输出这个临时数组作为转置矩阵。
以下是简单的示例代码实现:
```c
#include <stdio.h>
void transpose(int m[], int n, int transposed_m[]) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < i; ++j) {
// 交换转置矩阵中的元素
int temp = transposed_m[j * n + i];
transposed_m[j * n + i] = transposed_m[i * n + j];
transposed_m[i * n + j] = temp;
}
}
}
int main() {
int n;
scanf("%d", &n);
// 假设输入的矩阵是用户手动输入的,这里仅作示例
// 在实际应用中,应该替换为动态内存分配或二维数组
int matrix[n][n];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
scanf("%d", &matrix[i][j]);
}
}
// 创建转置矩阵
int transposed[n][n];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
transposed[j][i] = matrix[i][j];
}
}
// 打印转置矩阵
printf("转置后的矩阵:\n");
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
printf("%d ", transposed[i][j]);
}
printf("\n");
}
return 0;
}
```
样例输入和输出如你所给出的:
输入:3 1 2 3 4 5 6 7 8 9
输出:1 4 7 2 5 8 3 6 9
阅读全文