c语言如何用自定义函数将二维数组的行列转换输出
时间: 2024-01-01 20:04:02 浏览: 27
可以定义一个函数,接收一个二维数组和其行列数作为参数,然后将行列交换后输出。具体代码如下:
```
#include <stdio.h>
void transpose(int arr[][3], int row, int col) { // 传入二维数组和行列数
int i, j;
int trans[col][row]; // 定义转置后的数组,行列互换
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
trans[j][i] = arr[i][j]; // 将原数组中的元素赋值到转置数组中对应的位置
}
}
// 输出转置后的数组
for (i = 0; i < col; i++) {
for (j = 0; j < row; j++) {
printf("%d ", trans[i][j]);
}
printf("\n");
}
}
int main() {
int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
transpose(arr, 3, 3); // 调用自定义函数
return 0;
}
```
输出结果为:
```
1 4 7
2 5 8
3 6 9
```
相关问题
c语言在自定义函数里怎么返回数组
在 C 语言中,函数无法直接返回数组。但是,你可以使用指针来返回数组中的元素。
例如,你可以定义一个函数,该函数使用指针作为参数,并将数组中的元素赋值给指针:
```
void get_array(int *arr) {
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
}
int main() {
int arr[3];
get_array(arr);
printf("%d %d %d\n", arr[0], arr[1], arr[2]);
return 0;
}
```
在上面的代码中,函数 `get_array` 接收一个指向整数的指针作为参数,并将数组中的三个元素赋值给指针所指向的内存空间。在 `main` 函数中,我们定义了一个整型数组 `arr`,并将它作为参数传递给函数 `get_array`。这样,函数就可以修改数组 `arr` 中的元素了。
你也可以使用结构体来返回多个值,例如:
```
struct result {
int arr[3];
int size;
};
struct result get_array() {
struct result res;
res.arr[0] = 1;
res.arr[1] = 2;
res.arr[2] = 3;
res.size = 3;
return res;
}
int main() {
struct result res = get_array();
printf("%d %d %d\n", res.arr[0], res.arr[1], res.arr[2]);
printf("Size: %d\n", res.size);
return 0;
}
```
在上面的代码中,我们定义了一个名为 `result` 的结构体,该结构体包含一个整型
C语言用递归函数求一维数组中位数
以下是C语言用递归函数求一维数组中位数的代码实现:
```c
#include <stdio.h>
// 递归函数求一维数组中位数
float median(int arr[], int n) {
if (n % 2 == 0) {
return (arr[n / 2 - 1] + arr[n / 2]) / 2.0;
} else {
return arr[n / 2];
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
printf("中位数为:%f", median(arr, n));
return 0;
}
```