.写一个函数,使给定的一个3×3的二维整型数组转置,即行列互换。用C语言回答
时间: 2024-12-18 12:36:26 浏览: 1
在C语言中,你可以创建一个函数来完成3x3矩阵的转置操作。下面是一个简单的示例:
```c
#include <stdio.h>
// 定义3x3矩阵结构体
typedef struct {
int data[3][3];
} Matrix;
// 函数声明,接收一个Matrix指针作为参数,并返回其转置后的Matrix
void transpose(Matrix *matrix);
// 主函数演示如何使用
int main() {
Matrix original = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
printf("Original matrix:\n");
printMatrix(original);
transpose(&original); // 调用转置函数
printf("\nTransposed matrix:\n");
printMatrix(original);
return 0;
}
// 打印矩阵函数
void printMatrix(const Matrix matrix) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix.data[i][j]);
}
printf("\n");
}
}
// 实现转置函数
void transpose(Matrix *matrix) {
int temp[3][3]; // 临时数组用于交换元素
for (int i = 0; i < 3; i++) {
for (int j = i; j < 3; j++) {
temp[i][j] = matrix->data[j][i]; // 存储行到列的数据
temp[j][i] = matrix->data[i][j]; // 存储列到行的数据
}
}
// 将临时数组的数据复制回原矩阵
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matrix->data[i][j] = temp[i][j];
}
}
}
```
这个程序首先定义了一个3x3矩阵结构体,然后实现了一个`transpose`函数,它接受一个指向矩阵的指针,通过临时数组交换矩阵的行和列,最后打印出转置后的矩阵。
阅读全文