c语言进行二维数组四行三列的矩阵转置
时间: 2023-12-09 19:43:47 浏览: 42
下面是一个C语言程序,用于将一个4行3列的二维矩阵进行转置:
```c
#include <stdio.h>
int main() {
int matrix[4][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}};
int transposed_matrix[3][4];
// 将原矩阵转置
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
transposed_matrix[j][i] = matrix[i][j];
}
}
// 输出转置后的矩阵
printf("转置后的矩阵:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", transposed_matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
运行该程序,输出结果如下:
```
转置后的矩阵:
1 4 7 10
2 5 8 11
3 6 9 12
```
相关问题
c语言二维数组矩阵转置
同样地,C语言中的二维数组矩阵转置也是将原始矩阵的行和列交换得到一个新的矩阵,新矩阵的行数和列数与原始矩阵相反。下面是一个简单的实现代码:
```c
#include <stdio.h>
void transpose(int matrix[][3], int rows, int cols) {
// 创建一个新矩阵,行数和列数与原始矩阵相反
int new_matrix[cols][rows];
// 遍历原始矩阵,将每个元素放入新矩阵对应的位置
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
new_matrix[j][i] = matrix[i][j];
}
}
// 将新矩阵的内容复制回原始矩阵
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
matrix[j][i] = new_matrix[i][j];
}
}
}
int main() {
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
printf("Original matrix:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
transpose(matrix, 3, 3);
printf("Transposed matrix:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
使用示例:
```c
Original matrix:
1 2 3
4 5 6
7 8 9
Transposed matrix:
1 4 7
2 5 8
3 6 9
```
注意:此代码只适用于二维数组的转置,如果需要处理更高维度的数组,可以考虑使用动态内存分配或第三方库等方式。
用C语言实现二维数组的输入输出与转置
二维数组的输入输出可以通过循环遍历数组实现,而转置则需要对数组进行行列交换。以下是示例代码:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 4
int main() {
int arr[ROWS][COLS], transposed_arr[COLS][ROWS];
// 输入二维数组
printf("请输入一个 %d x %d 的矩阵:\n", ROWS, COLS);
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
scanf("%d", &arr[i][j]);
}
}
// 输出二维数组
printf("输入的矩阵为:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d\t", arr[i][j]);
}
printf("\n");
}
// 转置二维数组
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
transposed_arr[j][i] = arr[i][j];
}
}
// 输出转置后的二维数组
printf("转置后的矩阵为:\n");
for (int i = 0; i < COLS; i++) {
for (int j = 0; j < ROWS; j++) {
printf("%d\t", transposed_arr[i][j]);
}
printf("\n");
}
return 0;
}
```
注意这里使用了宏定义 `ROWS` 和 `COLS` 来定义数组的行数和列数,方便后续修改。