写一函数,以指针作为实参和形参,在被调用函数里实现 3× 3 矩阵转置,并在主函数中输出转置后任一行任一列元素的值。 矩阵在声明部分赋值: 135 246 10 11 12
时间: 2024-05-12 19:15:10 浏览: 112
得一个 3×3 的矩阵转置,用一函数实现之。在主函数中用 scanf 函数输入矩阵元素
以下是实现该功能的代码:
```c
#include <stdio.h>
void transpose(int *matrix) {
int temp;
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
temp = *(matrix + i * 3 + j);
*(matrix + i * 3 + j) = *(matrix + j * 3 + i);
*(matrix + j * 3 + i) = temp;
}
}
}
int main() {
int matrix[3][3] = {{1, 3, 5}, {2, 4, 6}, {10, 11, 12}};
transpose(&matrix[0][0]);
printf("%d\n", matrix[1][2]); // 输出转置后的任意元素
return 0;
}
```
在主函数中,我们先声明一个 3x3 的矩阵,并初始化它。然后我们调用 `transpose` 函数,将矩阵进行转置。注意,我们将矩阵的首元素的地址传递给 `transpose` 函数,这样可以通过指针来访问矩阵的元素。
在 `transpose` 函数中,我们使用两个循环来遍历矩阵的上三角部分。对于每个需要交换的元素,我们使用一个临时变量 `temp` 来暂存其中一个元素的值,然后交换它们的值。这样就可以实现矩阵的转置。
最后,在主函数中我们输出转置后的任意一个元素,以验证矩阵转置的正确性。
阅读全文