3. 在程序中,为了方便对数组进行操作,经常会定义一些操作数组的功能函数,这些函数往往会将数组作为函数参数。数组作为函数参数时,传递的就是数组所在内存块的地址,形参与实参操作的是同一块内存。在形参中改变数组中的元素,实参的数组也会改变。本案例要求编写一个函数,将一个3*4的矩阵转置。
时间: 2024-03-03 11:49:29 浏览: 88
好的,下面是将一个3*4的矩阵转置的函数示例代码:
```c
#include <stdio.h>
void transpose(int arr[][4], int row, int col) {
int i, j, temp;
for (i = 0; i < row; i++) {
for (j = i+1; j < col; j++) {
temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
}
int main() {
int i, j;
int arr[3][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
printf("转置前的矩阵为:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
transpose(arr, 3, 4);
printf("转置后的矩阵为:\n");
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
函数`transpose`接收一个3*4的二维数组及其行数和列数作为参数,通过两重循环遍历数组,将行和列交换位置。注意,这里只需要交换上三角和下三角的元素即可,因为对角线上的元素不需要动。在`main`函数中,先输出原始的矩阵,然后调用`transpose`函数进行转置,最后再输出转置后的矩阵。
阅读全文