利用二维数组实现矩阵转置,键盘输入矩阵行列和元素,显示初始矩阵,将矩阵转置,显示转置后的矩阵。用c语言编写代码
时间: 2024-12-14 19:04:09 浏览: 15
在C语言中,我们可以使用二维数组(array of arrays)来实现矩阵的转置。这里是一个简单的示例,它会提示用户输入矩阵的行数、列数以及每个元素,然后展示原始矩阵和转置后的矩阵:
```c
#include <stdio.h>
// 函数声明
void printMatrix(int matrix[][10], int rows, int cols);
int transpose(int matrix[][10], int rows, int cols);
int main() {
int rows, cols;
// 获取矩阵的行数和列数
printf("请输入矩阵的行数: ");
scanf("%d", &rows);
printf("请输入矩阵的列数: ");
scanf("%d", &cols);
// 确保矩阵的大小足够存储数据
if (rows * cols > 10) {
printf("矩阵过大,无法处理。\n");
return 1;
}
// 初始化并打印原始矩阵
int matrix[rows][cols];
printf("\n原始矩阵:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 转置矩阵
transpose(matrix, rows, cols);
// 打印转置后的矩阵
printf("\n转置后的矩阵:\n");
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
printf("%d ", matrix[j][i]);
}
printf("\n");
}
return 0;
}
// 矩阵转置函数
void transpose(int matrix[][10], int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = i; j < cols; j++) {
// 交换矩阵中的对应元素
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
```
这个程序首先获取矩阵的尺寸,然后创建一个二维数组来存储矩阵。接着,它打印原始矩阵,调用`transpose`函数进行转置,并再次打印转置后的矩阵。
阅读全文